Usando el estilo configure
en Cabal, puede escribir un pequeño script de configuración que sustituye una variable para el resultado del comando sdl-config. Los valores luego serán reemplazados en un archivo $ foo.buildinfo.in, produciendo un archivo $ foo.buildinfo, que Cabal incluirá en el proceso de compilación.
solución general: el script de configuración
#!/bin/sh
SDLFLAGS=`sdl-config --cflags`
echo Found "$SDLFLAGS"
sed 's,@[email protected],'"$SDLFLAGS"',' z.buildinfo.in > z.buildinfo
El archivo $ foo.builinfo.in
cc-options: @[email protected]
El archivo .cabal
Build-type: Configure
Al ejecutar "configure cabal" del campo "CC-options" en z.buildinfo se creará para contener:
cc-options: -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
la que Cabal incluirá en la construcción.
Listo.
Solución específica para herramientas pkg-config
Para las herramientas que soportan el pkg-config-style de configuración, tales como sdl
o cairo
y otros, Cabal tiene apoyo específico ya:
pkgconfig-depends: package list
A list of pkg-config packages, needed to build this package. They can be annotated with versions, e.g. gtk+-2.0 >= 2.10, cairo >= 1.0. If no version constraint is specified, any version is assumed to be acceptable. Cabal uses pkg-config to find if the packages are available on the system and to find the extra compilation and linker options needed to use the packages.
If you need to bind to a C library that supports pkg-config (use pkg-config --list-all to find out if it is supported) then it is much preferable to use this field rather than hard code options into the other fields.
Así que para sdl
solo necesita:
pkgconfig-depends: sdl
Hey. Seguí tus instrucciones y Mikhail en la edición de.archivo cabal; cuando trato de construir me sale algo como: cabal: error interno: el paquete contiene una biblioteca pero no hay datos de configuración correspondientes Pero mi proyecto no contiene una biblioteca. Contiene solo un ejecutable. ¿Qué podría significar este mensaje? :/ – fatuhoku
Compruebe la sintaxis de su archivo .cabal (o intente generar uno nuevo con 'cabal init '). Sin embargo, primero haga una copia de seguridad de su viejo archivo .cabal. –
Sin suerte. El mismo mensaje. De hecho, el archivo original se generó con 'cabal init', y he cambiado muy pocas cosas. Presenté este como un error cabal en Hackage trac. Creo que es lo suficientemente claro para mí que el mensaje realmente no describe el problema adecuadamente. – fatuhoku