Используя стиль configure
в Cabal, вы можете написать небольшой скрипт configure, который заменяет переменную для вывода команды sdl-config. Затем значения будут заменены в файле $ foo.buildinfo.in, в результате будет получен файл $ foo.buildinfo, который Cabal включит в процесс сборки.
Общее решение: скрипт настройки
#!/bin/sh
SDLFLAGS=`sdl-config --cflags`
echo Found "$SDLFLAGS"
sed 's,@SDLFLAGS@,'"$SDLFLAGS"',' z.buildinfo.in > z.buildinfo
Файл $ foo.builinfo.in
cc-options: @SDLFLAGS@
.Cabal файл
Build-type: Configure
Когда вы запускаете "cabal configure", будет создано поле "cc-options" в z.buildinfo для хранения:
cc-options: -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
Какая клика будет включена в сборку.
Готово.
Специальное решение для инструментов pkg-config
Для инструментов, которые поддерживают pkg-config -стиль конфигурации, например sdl
или cairo
и другие, Cabal уже имеет специальную поддержку:
pkgconfig-зависит: список пакетов
Список пакетов pkg-config, необходимых для сборки этого пакета. Они могут быть аннотированы версиями, например GTK + -2,0> = 2,10, Каир> = 1,0. Если ограничение версии не указано, любая версия считается приемлемой. Cabal использует pkg-config, чтобы определить, доступны ли пакеты в системе, и найти дополнительные параметры компиляции и компоновщика, необходимые для использования пакетов.
Если вам нужно привязать библиотеку C, которая поддерживает pkg-config (используйте pkg-config --list-all, чтобы узнать, поддерживается ли она), тогда гораздо предпочтительнее использовать это поле, чем параметры жесткого кода в другие поля.
Так что для sdl
вам просто нужно:
pkgconfig-depends: sdl