2015-10-08 94 views
0

我使用cabal來管理中型項目(不打算用於分發)。我使用Makefile執行基本設置,然後調用cabalconfigure/build來構建項目的其餘部分。我還希望能夠使用GHC中內置的工具來選擇性地分析項目。Cabal配置文件選項

這似乎涉及.cabal文件中的一組不同的選項,並將--enable-executable-profiling選項傳遞給cabal配置階段。後者在Makefile中很容易實現,但是我找不到一個乾淨的方式來告訴cabal使用一組編譯器選項,具體取決於我如何調用make。簡而言之,我正在尋找類似於爲.cabal文件制定規則的內容。

道歉,如果我錯過了這裏非常明顯的東西 - 我還是有點新Haskell/cabal。謝謝!

回答

2

兩個明顯的選項浮現在腦海中:

  • 使用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 -profilingcabal把這個標誌和關閉。