5

什麼是Haskell世界中的自動工具的替代方案?我希望能夠在相同源代碼的不同配置之間進行選擇。如何管理單個Haskell程序的多個配置?

例如,Haskell中至少有兩個MD5實現:Data.Digest.OpenSSL.MD5Data.Digest.Pure.MD5。我想以這樣的方式編寫代碼,以便能夠確定哪個庫已經安裝,並且不需要安裝其他庫。

在C中,我可以使用Autotools/Scons/CMake + cpp。在Python中,我可以捕獲ImportError。我應該在Haskell中使用哪些工具?

+0

謝謝,諾曼,這是更好的標題 – sastanin 2009-04-15 10:00:34

回答

14

在Haskell中,您使用Cabal配置。在您的項目頂層目錄中,您將文件的擴展名爲.cabal,例如<yourprojectname>.cabal。內容大致是:

Name:    myfancypackage 
Version:    0.0 
Description:   myfancypackage 
License:    BSD3 
License-file:  LICENSE 
Author:    John Doe 
Maintainer:   [email protected] 
Build-Type:   Simple 
Cabal-Version:  >=1.4 

Flag pure-haskell-md5 
    Description: Choose the purely Haskell MD5 implementation 
    Default: False 

Executable haq 
    Main-is:   Haq.hs 
    Build-Depends:  base-4.* 
    if flag(pure-haskell-md5) 
    Build-Depends: pureMD5-0.2.* 
    else 
    Build-Depends: hopenssl-1.1.* 

Cabal documentation有更多的細節,特別是在Configurations部分。

+0

謝謝!這正是我正在尋找的答案,以及我的理解,我必須使用CC選項和cpp。Right? – sastanin 2009-04-14 14:23:57

2

正如nominolo所說,Cabal是使用的工具。特別是「配置」語法

相關問題