我正在使用cabal
来管理中型项目(不是用于分发)。我使用Makefile
执行基本设置,然后调用cabal
configure
/ build
来构建项目的其余部分。我还希望能够使用GHC内置的工具对项目进行配置。
这似乎涉及.cabal
文件中的一组不同选项,以及将--enable-executable-profiling
选项传递到cabal
配置阶段。后者在Makefile
中很容易实现,但我找不到一种干净的方法来告诉cabal
使用某些编译器选项,这取决于我如何调用make
。简单地说,我正在寻找类似于为.cabal
文件制定规则的东西。
如果我在这里错过了一些非常明显的事情,我会道歉 - 我对Haskell
/ cabal
仍然有点新鲜。谢谢!
答案 0 :(得分:2)
我想到了两个明显的选择:
使用make
的条件分配。例如,可以写一个
PROF_FLAGS?=-prof -auto-all
然后将--ghc-options="${PROF_FLAGS}"
添加到cabal
中相应的Makefile
来电。然后,您可以将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
,分别打开和关闭此标记。