Haskell 如何将CPPFLAGS和LDFLAGS添加到我的阴谋集团文件中?

Haskell 如何将CPPFLAGS和LDFLAGS添加到我的阴谋集团文件中?,haskell,cabal,Haskell,Cabal,我似乎无法在我的项目上成功运行cabal install,因为它依赖于text icu包,该包需要在系统上安装icu4c库 我使用brew安装icu4c在Mac上安装了icu4c 但是cabal install text icu仍然不起作用,因为brew install icu4c将库安装在cabal构建系统找不到的地方brew信息icu4c为我提供了以下特殊说明: This formula is keg-only, so it was not symlinked into /usr/local

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

我使用
brew安装icu4c
在Mac上安装了
icu4c

但是
cabal install text icu
仍然不起作用,因为
brew install icu4c
将库安装在cabal构建系统找不到的地方<代码>brew信息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
所以我需要告诉阴谋集团关于LDFLAGS和CPPFLAGS的事。在我的阴谋集团档案里怎么做

编辑


brew link icu4c--force
似乎可以解决这个问题。但是我仍然想知道原始问题的答案。

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

将阴谋集团指向那些路径 您可以使用如下一些选项标志将所需信息传递给
cabal install

cabal install \
    --extra-include-dirs=THAT_CPPFLAGS_DIR \
    --extra-lib-dirs=THAT_LDFLAGS_DIR \
    …
如果要提供多个目录,可以重复
--extra XXX dirs
标志,逐个建立目录列表

将堆栈指向这些路径 如果您使用的是stack,那么您可以在
~/.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

这将适用于作为该用户的
堆栈构建
,而无需在每个命令调用上使用标志。

如果希望在Cabal文件中使用它:在Cabal文件的
可执行
部分中使用时,它是否有效?为什么不希望它出现在Cabal文件中:查找已安装的软件包取决于操作系统。如何选择:你有没有试过将这些旗帜提供给
阴谋集团本身?(
LDFLAGS=blah-CPPFLAGS=blah-cabal-install-text-icu
?)你说得对,我不想在我的阴谋集团文件中硬编码这些路径。
--extra include dirs=PATH
--extra lib dirs=PATH
?我是通过
cabal install安装的--extra include dirs=/usr/local/cillar/icu4c/54.1/include--extra lib dirs=/usr/local/cillar/icu4c/54.1/lib
注意,必须指定这两个标志@Yuras,这是你的答案,有一个成功的构建来支持它。我没有提出这一点作为答案,因为这是你首先提出的。