加入收藏 | 设为首页 | 会员中心 | 我要投稿 新余站长网 (https://www.0790zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

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

发布时间:2021-03-06 07:45:21 所属栏目:Windows 来源:网络整理
导读:我在Hackage上维护一个带有FFI绑定的库.所以我的 Haskell库依赖于相应的C库及其头文件.现在我在.cabal文件中指定外部依赖关系,如下所示: PkgConfig-Depends: libfoo = 1.2 它在Linux中对我来说很好.但是,我有一个库的用户报告,在Windows上安装pkg-config是

我在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

(编辑:新余站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读