Libchecker:Компиляция проверяющих программ

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Проверяющие программы/libchecker/Компиляция проверяющих программ

При компиляции проверяющих программ, использующих библиотеку libchecker необходимо указывать опции компилятора, задающие пути к заголовочным файлам, пути к исполняемым файлам и т. п. Для этой цели рекомендуется использовать программу ejudge-config, передавая ей опции --cflags, --ldflags, --libs.

Опция --cflags вызывает печать на стандартный поток вывода опций компилятора, указывающих путь к заголовочным файлам библиотеки libchecker. Опция --ldflags вызывает печать на стандартный поток вывода опций компилятора, указывающих пути к библиотечным файлам libchecker. Наконец, опция --libs вызывает печать на стандартный поток вывода имен необходимых библиотек.

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

gcc ‘${prefix}/bin/ejudge-config --cflags --ldflags‘ check_A.c \
 -o check_A ‘${prefix}/bin/ejudge-config --libs‘

Здесь ${prefix} должен быть заменён на корень инсталляции системы ejudge. Если каталог ${prefix}/bin добавлен в переменную PATH, вместо ${prefix}/bin/ejudge-config можно просто писать ejudge-config.

Аналогичным образом может быть написан Makefile:

EJUDGE_CONFIG = ${prefix}/bin/ejudge-config
CC = gcc
LD = gcc
CFLAGS = $(shell $(EJUDGE_CONFIG) --cflags)
LDFLAGS = $(shell $(EJUDGE_CONFIG) --ldflags)
LDLIBS = $(shell $(EJUDGE_CONFIG) --libs)
all : check_A
check_A : check_A.o
check_A.o : check_A.c

Здесь ${prefix} также должен быть заменён на корень инсталляции системы ejudge.

Если для создания и настройки турниров используется веб-редактор настроек турниров в программе serve-control, то все проверяющие программы могут быть скомпилированы автоматически при выполнении команды “Check contest settings”. При этом корректные опции компилятора будут указаны автоматически.