gpt4 book ai didi

haskell - 如何将 CPPFLAGS 和 LDFLAGS 添加到我的 cabal 文件中?

转载 作者:行者123 更新时间:2023-12-02 17:05:29 26 4
gpt4 key购买 nike

我似乎无法在我的项目上成功运行 cabal install,因为它依赖于 text-icu 包,而该包需要 icu4c 库安装在系统上。

嗯,我使用 brew install icu4c 在我的 Mac 上安装了 icu4c

但是 cabal install text-icu 仍然不起作用,因为 brew install icu4c 将库安装在 cabal 构建系统找不到它的地方。 brew info icu4c 给了我这些特殊说明:

This formula is keg-only, so it was not symlinked into /usr/local.

...

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

LDFLAGS: -L/usr/local/opt/icu4c/lib
CPPFLAGS: -I/usr/local/opt/icu4c/include

所以我需要告诉 cabal 这些 LDFLAGS 和 CPPFLAGS。我如何在我的 cabal 文件中做到这一点?

编辑

brew link icu4c --force 似乎可以解决问题。但我还是想知道原来问题的答案。

最佳答案

Homebrew 为您提供了一个用于 CPPFLAGS 的目录,另一个用于 LDFLAGS 的目录。我们需要将 Haskell 构建系统指向这些目录,以便它可以找到要包含的适当的头文件以及要链接的适当的库。

将 cabal 指向这些路径

您可以使用一些选项标志将所需的信息传递给cabal install,如下所示:

cabal install \
--extra-include-dirs=THAT_CPPFLAGS_DIR \
--extra-lib-dirs=THAT_LDFLAGS_DIR \

如果您要提供多个目录,则可以重复 --extra-XXX-dirs 标志来逐一构建目录列表。

将堆栈指向这些路径

如果您使用的是堆栈,那么您可以通过附加以下内容来提供这些选项作为 ~/.stack/config.yml 中用户配置的一部分:

extra-include-dirs:
- /usr/local/opt/openssl/include
- /usr/local/opt/icu4c/include
extra-lib-dirs:
- /usr/local/opt/openssl/lib
- /usr/local/opt/icu4c/lib

这将适用于您作为该用户堆栈构建的所有内容,而无需在每个命令调用上使用标志进行模糊处理。

关于haskell - 如何将 CPPFLAGS 和 LDFLAGS 添加到我的 cabal 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23888855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com