2014-03-04 47 views
4

我正在研究一個Python/Haskell項目,並且正在尋找Makefile的替代方案。明顯的選擇是Python SCons和Haskell Shake。由於我對他們兩人都沒有經驗,所以我想問問他們的缺點和優點是否有任何比較。SCons和Shake之間的區別

更新:該項目建築有點複雜的要求:

  • 讓用戶配置構建 - 以工具等類似的選項來啓用/禁用,路徑
  • 有兩個Haskell和在編譯時生成Python文件。他們的依賴應該正常工作。
  • 有多個Haskell程序共享大部分源文件。我想這樣:
    • 它可以建立每個人單獨,而不是建立不需要的來源;
    • 編譯多個程序時不會多次構建源文件;如果可能的話,在編譯過程中尚未達到並行性。
  • 檢查目標系統及其路徑幾個安裝的程序(如pythonflock等)
  • 檢查目標系統的依賴,無論是Python和哈斯克爾。
  • 根據依賴項參數化構建 - 如果缺少測試的依賴關係,應該仍然可以構建項目,跳過測試(並通知用戶相關信息)。
+0

請注意,僅僅因爲您的項目在Python/Haskell中,並不會限制您使用SCons/Shake - 這兩種構建系統都適用於多種語言的項目。當然,混合語言較少通常是有益的。 –

+0

@NeilMitchell確實如此,但我想避免向用戶強加額外的需求,這就是爲什麼我試圖將構建系統限制爲項目已經使用的語言。 –

回答

3

有一個SCons wiki page比較它與其他生成工具,遺憾的是沒有與Haskell/Shake的比較。

此外,這question可能會有所幫助。

SCons的真正的亮點相比其他工具(尤其是製造和cmake的)通過其Python語法,其隱含依賴系統,這是非常準確和易於使用。

4

有一個Why Shake?文件給出了選擇Shake而不是其他構建系統的原因,但它並不專注於與SCons的比較。

更新:您的所有需求似乎都很容易在Shake中表達(如果遇到任何問題,請向StackOverflow詢問)。至於Shake vs SCons:

  • 搖動特別擅長處理生成的文件,這些文件的依賴關係不能被靜態預測,特別是當您從編譯的程序生成文件時。
  • 構建項目的Haskell部分可能比構建Python更困難(因爲Haskell具有更豐富的結構和更復雜的編譯器)。如果您需要,使用Shake可輕鬆點擊existing examples of compiling Haskell並使用libraries for parsing Haskell