Difference between revisions of "Потестовая компиляция"

From EjudgeWiki
Line 15: Line 15:
 
Режим потестовой компиляции включается для каждой задачи индивидуально или с помощью задания в абстрактной задаче положительного значения конфигурационной переменной <tt>[[serve.cfg:problem:enable_multi_header|enable_multi_header]]</tt>.
 
Режим потестовой компиляции включается для каждой задачи индивидуально или с помощью задания в абстрактной задаче положительного значения конфигурационной переменной <tt>[[serve.cfg:problem:enable_multi_header|enable_multi_header]]</tt>.
 
Если включен режим потестовой компиляции, то должен быть задан хотя бы один из шаблонов имен файлов: для заголовочного файла, для хвостового файла или для файла с опциями компиляции. Могут быть заданы несколько или все шаблоны имен файлов.
 
Если включен режим потестовой компиляции, то должен быть задан хотя бы один из шаблонов имен файлов: для заголовочного файла, для хвостового файла или для файла с опциями компиляции. Могут быть заданы несколько или все шаблоны имен файлов.
 +
 +
=== Примеры ===
 +
 +
Предположим, что необходимо задать индивидуальный хвостовой файл для каждого теста. Тогда конфигурация задачи может быть установлена следующим образом:
 +
 +
[problem]
 +
enable_multi_header
 +
footer_pat = "%03d_f"
 +
 +
К шаблону, задаваемому в переменной <tt>footer_pat</tt> автоматически будет добавлен суффикс исходных файлов языка программирования. Поэтому, если сдается файл для компилятора <tt>g++</tt>, то хвостовые файлы должны иметь имена <tt>001_f.cpp</tt>, <tt>002_f.cpp</tt>, <tt>003_f.cpp</tt> и так далее. Хвостовые файлы должны находиться в каталоге с тестами к задаче (<tt>tests</tt> в каталоге задачи).
 +
 +
Если дополнительно включить опцию <tt>use_lang_multi_header</tt>, например,
 +
 +
[problem]
 +
enable_multi_header
 +
footer_pat = "%03d_f"
 +
 +
то кроме суффикса исходного файла языка программирования к шаблону будет добавлено короткое имя языка программирования. Таким образом при сдаче программы для компилятора <tt>g++</tt> хвостовые файлы должны иметь имена <tt>001_f.g++.cpp</tt>, <tt>002_f.g++.cpp</tt>, <tt>003_f.g++.cpp</tt> и так далее. Обратите внимание, что добавляется символ "точка" и далее короткое имя языка.

Revision as of 05:01, 20 March 2016

Навигация: Главная страница/Система ejudge/Использование/Потестовая компиляция

Поддерживается начиная с версии 3.5.1

Конфигурационные переменные: enable_multi_header, use_lang_multi_header, header_pat, footer_pat, compiler_env_pat

В режиме потестовой компиляции генерируется отдельный исполняемый файл для каждого теста. При компиляции для каждого теста может быть задан индивидуальный заголовочный или хвостовой файл и индивидуальные опции компиляции.

По-прежнему, тестирование программы состоит из фазы компиляции и фазы прогона на тестах, но в случае потестовой компиляции фаза компиляции выдает в качестве результата .zip-архив со всеми скомпилированными исполняемыми файлами.

При потестовой компиляции компиляция всегда выполняется для всех тестов и не прерывается, если компиляция исполняемого файла для какого-либо теста привела к ошибке компиляции. Поэтому в протоколе компиляции всегда будут сообщения об ошибках и предупреждениях компиляции для всех тестов. Однако, если компиляция хотя бы одного исполняемого файла была неудачна, то вся стадия компиляции завершается с вердиктом ошибки компиляции.

При потестовой компиляции заголовочные, хвостовые и файлы опций компиляции располагаются в каталоге с тестами.

Режим потестовой компиляции включается для каждой задачи индивидуально или с помощью задания в абстрактной задаче положительного значения конфигурационной переменной enable_multi_header. Если включен режим потестовой компиляции, то должен быть задан хотя бы один из шаблонов имен файлов: для заголовочного файла, для хвостового файла или для файла с опциями компиляции. Могут быть заданы несколько или все шаблоны имен файлов.

Примеры

Предположим, что необходимо задать индивидуальный хвостовой файл для каждого теста. Тогда конфигурация задачи может быть установлена следующим образом:

[problem]
enable_multi_header
footer_pat = "%03d_f"

К шаблону, задаваемому в переменной footer_pat автоматически будет добавлен суффикс исходных файлов языка программирования. Поэтому, если сдается файл для компилятора g++, то хвостовые файлы должны иметь имена 001_f.cpp, 002_f.cpp, 003_f.cpp и так далее. Хвостовые файлы должны находиться в каталоге с тестами к задаче (tests в каталоге задачи).

Если дополнительно включить опцию use_lang_multi_header, например,

[problem]
enable_multi_header
footer_pat = "%03d_f"

то кроме суффикса исходного файла языка программирования к шаблону будет добавлено короткое имя языка программирования. Таким образом при сдаче программы для компилятора g++ хвостовые файлы должны иметь имена 001_f.g++.cpp, 002_f.g++.cpp, 003_f.g++.cpp и так далее. Обратите внимание, что добавляется символ "точка" и далее короткое имя языка.