Альтернативная раскладка файлов

From EjudgeWiki

Навигация: Главная страница/Система 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 (С версии 2.3.21)

При выполнении операции "Check contest settings" генерируется Makefile, содержащий правила для компиляции проверяющей программы, решения, нормализации тестов и т. п. Затем утилита make вызывается со следующими аргументами командной строки:

make EJUDGE_PREFIX_DIR=@prefix@ EJUDGE_CONTESTS_HOME_DIR=@contests_home@ EJUDGE_LOCAL_DIR=@local_dir@ check_settings

То есть программе make дополнительно передаются переменные окружения EJUDGE_PREFIX_DIR, EJUDGE_CONTESTS_HOME_DIR и EJUDGE_LOCAL_DIR, значения которых берутся из соответствующих параметров конфигурации ejudge. В качестве начальной цели сборки указывается цель check_settings, то есть в Makefile должна быть определена цель check_settings.

Использование Makefile (До версии 2.3.21)

Если в каталоге задачи существует файл 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 могут находиться правила и для генерации тестов.