月的19日更新2017年:
我有之前使用autotools的時間相當長。
目前我分別在工作和個人項目中大量使用cmake和meson。
一些個人建議:
- 的大隊伍,如果你想利用發電機VS和的Xcode堅持CMake的。如果你不需要這些,我會認真考慮介子。
- 在autotools上選擇介子,除非你需要autotools支持的一些非常深奧的東西,介子不支持。否則,恕我直言,Meson是一個比autotools更好的選擇,你將能夠支持Windows。
我也試過scons,waf和tup。
功能最全面的跨平臺系統是CMake
,但來自介子的DSL將更容易用於習慣於python等人。 Meson也開始支持VS(VS2015發電機),並且一些項目已經有了它的實驗支持,例如gstreamer。 Gstreamer在編譯窗口時也使用介子。現在有VS2015發電機和VS2017,但我最近沒有嘗試過自己的發電機。至於介子0.37.1需要一些工作,但他們正在改進它們,目前的版本已經是0.40。
介子
優點:
- 的DSL不會在所有的方式獲得。事實上,這是非常好的和熟悉的,基於python。
- 精心設計的交叉編譯支持。
- 的對象都是強類型的:你不能讓字符串替換錯誤很容易,因爲對象是諸如「depencency」實體「包括目錄」等
- 這是非常obviuos如何添加一個模塊的一個你的工具。
- 交叉編譯似乎更直接使用。
- 真的很好想。 Meson的設計師和主要作者知道他在設計構建系統時很好地談論了什麼。
- 非常非常快,尤其是在增量構建中。
- 該文檔是您可以在cmake中找到的10倍更好的文檔。去訪問http://mesonbuild.com,你會發現教程,howtos和一個很好的參考。這並不完美,但它確實是可以發現的。
缺點:作爲CMake的,不過,我認爲它已經對C完全可用++
- 沒有成熟。
- 儘管gnome,qt和常用模塊已經存在,但沒有那麼多模塊可用。
- 項目生成器:似乎VS生成器不能很好地工作,因爲現在。 CMake項目生成器更加成熟。
- 有一個python3 +忍者依賴。
CMake的
優點:
- 生成許多不同的IDE項目。這是一個非常適合團隊的不錯的功能。
- 與自動工具不同,可以很好地與Windows工具一起玩。
- 成熟的,幾乎事實上的標準。
- 微軟正在爲Visual Studio開發CMake集成。
缺點:
- 它不遵循任何衆所周知的標準或準則。
- 沒有卸載目標。
- DSL很奇怪,當你開始做比較等等,以及字符串VS列表的東西或轉義字符,你會犯很多錯誤,我很確定。
- 交叉編譯很糟糕。
自動工具
優點:
- 的交叉編譯最強大的系統,恕我直言。
- 生成的腳本不需要make,shell以及編譯器(如果需要編譯)。
- 命令行非常好,一致。
- unix世界的一個標準,很多文檔。
- 真正強大的命令行:更改安裝目錄,卸載, 重命名二進制文件...
- 如果您的目標是unix,使用此工具打包源代碼非常方便。
缺點:
- 它不會與微軟的工具,發揮出色。一個真正的showstopper。
- 學習曲線是......好吧......但實際上我可以說CMake也不那麼容易。
關於學習曲線,有兩個非常好的來源可以借鑑:
第一源將讓你和運行更快。這本書是一個更深入的討論。
從Scons,waf和tup,Scons和tup更像是make。 Waf更像CMake和autotools。起初,我嘗試了waf而不是cmake。我認爲它是一個完整的面向對象API的意義上的過度工程。這些腳本根本看起來並不簡短,它讓我對工作目錄和相關內容感到困惑。最後,我發現autotools和CMake是更好的選擇。我最喜歡的這三個構建系統是tup。
託普
優點
- 真的正確。
- 瘋狂快速。你應該試着相信它。
- 腳本語言依賴於一個非常簡單的想法,可以在10分鐘內理解。
缺點
- 它不會有一個全功能的配置框架。
- 我無法找到製作目標的方法,例如
doc
,因爲 他們生成我不知道的文件,並且它們必須在生成之前列在輸出中,或者至少,這是我現在的結論。這是一個非常惱人的限制,如果是這樣,因爲我不確定。
總而言之,目前我唯一正在考慮的新項目是Cmake和Meson。當我有機會時,我也會嘗試tup,但是它缺少配置框架,這意味着當你需要所有這些東西時,它會使事情變得更加複雜。另一方面,它非常快。
可能重複的[Autotools與Cmake與Scons](http://stackoverflow.com/questions/4071880/autotools-vs-cmake-vs-scons) – ptomato 2011-04-30 22:13:59