像 sdl-config 这样的配置工具如何与 cabalized 项目一起使用?
我有一个工作的 SDL/Haskell 应用程序,我想使用 Cabal 而不是当前的 Makefile 来构建它(因为这是“Haskell 方式”)。 Makefile 本身非常简单,我希望默认的 cabal 构建过程可以允许我重建 Makefile 中指定的构建命令。问题是它使用了“sdl-config”,这是一个为您提供所有必要的 cc 编译器选项的实用程序:
wrapper.o: SDLWrapper_stub.h
ghc -no-hs-main `sdl-config --cflags` -Wall wrapper.c -c
Cabal 在调用 GHC 时似乎没有将其扩展为 shell 调用。如何指定在编译 wrapper.o
时将 sdl-config 的选项输入到 GHC 中?
I have a working SDL/Haskell application that I would like to build using Cabal instead of the current Makefile (because that is the "Haskell way"). The Makefile is itself very simple, and I was hoping that the default cabal build process could allow me to reconstruct a build command specified in my Makefile. The problem is that it makes use of "sdl-config", a utility that gives you all the necessary cc- compiler options:
wrapper.o: SDLWrapper_stub.h
ghc -no-hs-main `sdl-config --cflags` -Wall wrapper.c -c
Cabal does not seem to expand that into a shell call when calling GHC. How can I specify that sdl-config's options should be fed into GHC when compiling wrapper.o
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 Cabal 中的
configure
样式,您可以编写一个小配置脚本,用变量替换 sdl-config 命令的输出。然后这些值将在 $foo.buildinfo.in 文件中替换,生成 $foo.buildinfo 文件,Cabal 将在构建过程中包含该文件。通用解决方案:配置脚本
$foo.builinfo.in 文件
.cabal 文件
当您运行“cabal configure”时,“cc- z.buildinfo 中的 options" 字段将被创建来保存:
哪个 cabal 将包含在构建中。
完毕。
pkg-config 工具的具体解决方案
对于支持 < em>pkg-config-style 的配置,例如
sdl
或cairo
等,Cabal 已经有了特定的支持:因此,对于 sdl 您只需要:
Using the
configure
style in Cabal, you can write a little configure script that substitutes a variable for the output of the sdl-config command. The values will then be replaced in a $foo.buildinfo.in file, yielding a $foo.buildinfo file, that Cabal will include in the build process.General solution: the configure script
The $foo.builinfo.in file
The .cabal file
When you run "cabal configure" the "cc-options" field in z.buildinfo will be created to hold:
which cabal will include in the build.
Done.
Specific solution for pkg-config tools
For tools that support the pkg-config-style of configuration, such as
sdl
orcairo
and others, Cabal has specific support already:So for
sdl
you just need:在
$PROJ_NAME.cabal
文件中使用Configure
构建类型,并从$PROJ_NAME.buildinfo 生成
模板,带有$PROJ_NAME.buidinfo
文件.inconfigure
脚本。查看 Hackage 上 SDL 库的源代码作为示例。 Cabal 用户指南的本节提供更多详细信息。提示:不要忘记在
extra-source-files
字段中提及$PROJ_NAME.buildinfo.in
和configure
。Use the
Configure
build type in your$PROJ_NAME.cabal
file and generate a$PROJ_NAME.buidinfo
file from a$PROJ_NAME.buildinfo.in
template with aconfigure
script. Look at the source of the SDL library on Hackage for an example. This section of the Cabal user guide provides more details.One tip: do not forget to mention
$PROJ_NAME.buildinfo.in
andconfigure
in theextra-source-files
field.