Haskell inline-c 多步 build/link 与 Cabal

Haskell inline-c multi-step build/link with Cabal

我正在编写一个使用 inline-c 的 FFI-heavy 库,构建过程是:

问题:目前我正在 makefile 中执行上述操作(参见 https://github.com/ocramz/petsc-hs/blob/master/makefile ), but I'd like to package it up in a Cabal file (working version : https://github.com/ocramz/petsc-hs/blob/master/petsc-hs.cabal)。

子问题:

提前感谢大家的指点

How does one control the build/link sequence in Cabal?

您可以在您的 cabal 文件中使用 Build-Type: Custom 并使用自定义 Setup.hs 控制一切。

查看 UserHooks data type 您可以控制的阴谋集团的所有阶段。

一些示例:

  • SDL - 使用 autoconfUserHooks 让 cabal 运行 一个 configure 脚本
  • 这个 SO 答案包含覆盖 confHook 的包的链接:
  • 查看此粘贴以获取指向更多自定义 Setup.hs 文件的链接:http://lpaste.net/142696

Are relative paths supported in Cabal? couldn't find this mentioned in the guide and bash-like ~ doesn't work

如果您的库在您的 cabal 包之外,我会考虑在 Unix/Linux 系统上使用 pkg-config 让 cabal 找到该库。查看此 SO 问题的答案:How to specify dependency on external C library in .cabal?

如果您的库是 cabal 包的一部分,请查看此博客 post 和相关的 github 存储库,其中显示了如何编写自定义 Setup.hs 文件来构建和安装图书馆在阴谋集团的正确位置: