Cabal配置文件选项

时间:2015-10-08 23:42:19

标签: haskell makefile ghc cabal

我正在使用cabal来管理中型项目(不是用于分发)。我使用Makefile执行基本设置,然后调用cabal configure / build来构建项目的其余部分。我还希望能够使用GHC内置的工具对项目进行配置。

这似乎涉及.cabal文件中的一组不同选项,以及将--enable-executable-profiling选项传递到cabal配置阶段。后者在Makefile中很容易实现,但我找不到一种干净的方法来告诉cabal使用某些编译器选项,这取决于我如何调用make。简单地说,我正在寻找类似于为.cabal文件制定规则的东西。

如果我在这里错过了一些非常明显的事情,我会道歉 - 我对Haskell / cabal仍然有点新鲜。谢谢!

1 个答案:

答案 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,分别打开和关闭此标记。