我使用cabal
来管理一个中等规模的项目(不打算用于分发)。我使用Makefile
来执行基本设置,然后它调用cabal
configure
/build
来构建项目的其余部分。我也希望能够有选择地配置使用工具内置于GHC项目。
这似乎涉及.cabal
文件中的一组不同的选项,以及将--enable-executable-profiling
选项传递到cabal
配置阶段。后者很容易在Makefile
中实现,但我找不到一个干净的方法来告诉cabal
使用一组特定的编译器选项,这取决于我如何调用make
。简单地说,我正在寻找类似于为.cabal
文件制定规则的东西。
如果我在这里错过了一些非常明显的东西,我道歉-我对Haskell
/cabal
仍然有点陌生。谢谢!
有两个明显的选择:
-
使用
make
的条件赋值。例如,可以写PROF_FLAGS?=-prof -auto-all
,然后将
--ghc-options="${PROF_FLAGS}"
添加到整个Makefile
的适当cabal
调用中。然后您可以将make
调用为:make # use the defaults PROF_FLAGS="-prof -auto-all" make # another way to use the defaults PROF_FLAGS="" make # don't do profiling
-
使用
cabal
标志。在你的.cabal
文件中应该是这样的:flag profiling default: True description: ask GHC to produce a profiling version executable foo if flag(profiling) ghc-options: -prof -auto-all
然后在您的
Makefile
中,您可以将-f profiling
或-f -profiling
传递给cabal
,分别打开和关闭此标志。