2011-05-11 86 views
7

我最近構建了一個小型的單一文件Haskell實用程序,將其包含在我純粹的PHP(提出的眉毛,我知道)項目的「工具」部分中。小型Haskell項目的跨平臺makefile?

最初,我檢查了.hs源文件以及在我的Linux開發機器上生成的二進制文件到我們使用的版本控制系統(Git)中。但是現在隨着我對它的更多思考,我想創建跨平臺的makefile以配合它,以便其他開發人員可以在他們的系統上輕鬆編譯它。

是否有一些最佳實踐/指導原則,甚至更好,我可以下載的Makefile模板?沒有什麼奇特的東西,只是讓開發人員指定一些關於GHC設置的細節並運行一個簡單的腳本來開始。

回答

11

分發您的Haskell項目的推薦方式是使用Cabal。 Cabal既是Haskell代碼的構建系統和包管理器,也可以輕鬆在不同平臺上構建Haskell代碼,同時爲您處理依賴關係。

下面是一個例子陰謀文件:

Name:   MyPackage 
Version:  0.0 
Cabal-Version: >= 1.2 
License:  BSD3 
Author:   Angela Author 
Synopsis:  Small package an utility program 
Build-Type:  Simple 

Executable myutility 
    Build-Depends: base 
    Main-Is:  Main.hs 
    Hs-Source-Dirs: src 

您可以通過運行交互生成一個小集團文件

$ cabal init 

那麼驚天動地會問你一些簡單的問題,並生成一個陰謀集團的文件,根據答案。然後,您可以調整此文件以適應您的特定需求。


要安裝包只是在包目錄

$ cabal install 

您也可以上傳你的包Hackage,標準哈斯克爾包程序存儲庫運行此。通過這種方式,人們可以用命令在單個步驟下載和安裝軟件包(和任何依賴關係)

$ cabal install mypackage 

還存在着工具轉換驚天動地包到其它的包管理器,如果你不希望要求您的用戶安裝了Cabal(儘管Cabal包含在Haskell Platform中)。

它也可以很好地與Haddock爲您的軟件包生成參考文檔。查看Hackage上的一些軟件包以獲取結果示例。

目前還有一些工作正在改進對Cabal測試套件的支持。總之,這些原因以及更多使得使用Cabal來組織,構建和分發Haskell項目是一個很大的好處。

+0

謝謝! Cabal是完美的解決方案,並且在Linux和Windows上開箱即用。你提供的cabal模板有很多幫助,我只需要將HUnit改爲基礎。 – 2011-05-11 17:57:17

+1

請注意,您也可以使用'cabal init'來創建一個空項目。最後,'cabal'是[Haskell平臺](http://hackage.haskell.org/platform)的一部分,所以如果你使用核心發行版,它將在你的所有機器上。 – 2011-05-11 18:25:58

2

如果您可以負擔其他依賴項,請嘗試cabal。這是一個專門爲Haskell設計的構建系統。