配置文件选项



我使用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,分别打开和关闭此标志。

相关内容

最新更新