Windows – 如何指定对.cabal中外部C库的依赖?

我在Hackage上维护一个带有FFI绑定的库.所以我的 Haskell库依赖于相应的C库及其头文件.现在我在.cabal文件中指定外部依赖关系,如下所示:
PkgConfig-Depends:
      libfoo >= 1.2

它在Linux中对我来说很好.但是,我有一个库的用户报告,在Windows上安装pkg-config是相当麻烦,而他喜欢

Includes:
      foo.h
Extra-libraries:
      foo

我希望我的库尽可能容易地构建,并且不希望强制不是严格要求的构建依赖关系.但是,我看到Cabal manual建议使用PkgConfig-Depends.

我的问题:

>我应该选择哪种方式进行跨平台包?
>可以这样写一个.cabal文件,它可以与pkg-config一起使用吗?
>而且,顺便说一句,pkg-config包含在Haskell平台中(我现在没有Windows机器来检查)?

pkg-config方法是最好的,因为pkg-config知道在哪里可以找到include和library文件,这些文件可能在某些系统上的非标准位置.

您可以编写.cabal文件以使用这两种方法.如图所示,使用一个标志的优点是,如果默认值失败,Cabal会自动尝试其他标志值. (以下示例未测试)

Flag UsePkgConfig
  Description: Use pkg-config to check for library dependences
  Default: True

Executable hax
  if flag(UsePkgConfig)
    PkgConfig-Depends: libfoo >= 1.2
  else
    Includes: foo.h
    Extra-libraries: foo

相关文章

文章浏览阅读2.2k次,点赞6次,收藏20次。在我们平时办公工作...
文章浏览阅读1k次。解决 Windows make command not found 和...
文章浏览阅读3.2k次,点赞2次,收藏6次。2、鼠标依次点击“计...
文章浏览阅读1.3w次。蓝光版属于高清版的一种。BD英文全名是...
文章浏览阅读974次,点赞7次,收藏8次。提供了更强大的功能,...
文章浏览阅读1.4w次,点赞5次,收藏22次。如果使用iterator的...