Difference between revisions of "Потестовая компиляция"
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 и так далее. Обратите внимание, что добавляется символ "точка" и далее короткое имя языка.