Потестовая компиляция

From EjudgeWiki
Revision as of 05:01, 20 March 2016 by Cher (talk | contribs)

Навигация: Главная страница/Система 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 и так далее. Обратите внимание, что добавляется символ "точка" и далее короткое имя языка.