Альтернативная раскладка файлов
Навигация: Главная страница/Система ejudge/Использование/Альтернативная раскладка файлов
Предположим, что в турнире определены две задачи с названиями A и B. Условия задач хранятся в файлах A.xml и B.xml, тесты находятся в каталогах A и B, а проверяющие программы check_A, check_B. Обычная раскладка файлов турнира в каталоге турнира имеет следующую структуру:
statements/A.xml B.xml checkers/check_A check_B tests/A/ B/
Таким образом, все проверяющие программы располагаются в одном каталоге, тесты в другом, условия в третьем.
В альтернативной раскладке файлов файлы группируются по задачам. Структура каталога в этом случае следующая:
problems/A/statement.xml check tests/ B/statement.xml check tests/
check — это исполняемые файлы проверяющих программ (в старой раскладке файлов им соответствовали программы check_A, check_B.
Для включения альтернативной раскладки файлов необходимо установить глобальную конфигурационную переменную advanced_layout в файле serve.cfg турнира.
При редактировании настроек турнира с помощью веб-интерфейса опция находится в разделе "Global settings (serve.cfg)" "Files and directories".
Использование Makefile
Если в каталоге задачи существует файл Makefile, то этот файл используется для компиляции проверяющих программ при выполнении операции "Check contests settings" вместо непосредственного вызова соответствующих компиляторов. Команде make передаются следующие аргументы командной строки:
make EJUDGE_PREFIX_DIR=@prefix@ EJUDGE_CONTESTS_HOME_DIR=@contests_home@ EJUDGE_LOCAL_DIR=@local_dir@ ejudge_make_problem
То есть программе make дополнительно передаются переменные окружения EJUDGE_PREFIX_DIR, EJUDGE_CONTESTS_HOME_DIR и EJUDGE_LOCAL_DIR, значения которых берутся из соответствующих параметров конфигурации ejudge. В качестве начальной цели сборки указывается цель ejudge_make_problem, то есть в Makefile должна быть определена цель ejudge_make_problem.
Сборка проверяющих программ выполняется до проверки тестов, поэтому в Makefile могут находиться правила и для генерации тестов.