2011-01-09 100 views
3

按照wiki項,爲什麼「cabal sdist」不包含所有需要構建的「文件」?

它封裝了建項目

我有一個簡單的可執行文件,只.cabal項目,該項目基本上包含

Executable myprog 
    hs-source-dirs: src 
    main-is: MyMain.hs 

所需的文件並且由src/以下的一些額外的.hs文件組成,超出src/MyMain.hs。例如,src/Utils.hs和其他幾個。

cabal build沒有問題建設myprog,並編譯如下src/所需的額外.hs文件,但cabal sdist沒有,這樣就產生一個不正常的源代碼壓縮包。我究竟做錯了什麼?如何告訴cabal在hs-source-dirs下包含所有源文件?

作爲一個側面提示,在GNU Autotools中,有一個make distcheck目標,它將首先構建一個源代碼tarball,然後嘗試通過新生成的源代碼tarball構建項目,從而確保一切正常。有沒有類似的cabal,爲了確保我的源代碼tarball是健全的?

回答

4

您應該在Executable節中的.cabal文件中列出其他Haskell文件。

other-modules: Utils AFewOthers 

分佈僅包括在你的.cabal文件中列出的源文件。 Cabal沒有其他方法來檢測包中的源文件。你仍然可以編譯,因爲cabal build調用ghc --make,ghc會找到並編譯它需要的所有源文件。

相關問題