利用cmake來搭建開發環境

來源:互聯網
上載者:User

標籤:os   使用   java   ar   檔案   div   sp   代碼   on   

對於經常在終端下寫程式的non-windows程式員,Makefile絕對是最常用的工具,小到一個檔案的簡單的測試程式,大到數百個檔案的商業軟體,只需要有shell,一個make命令就可得到可啟動並執行程式,Makefile絕對功不可沒;可惜世界中不是那麼太平,不但各個Posix系統的API千差萬別,硬體平台各異,就連Makefile本身也有多個不相容的格式,譬如GNU Makefile 拿到Solaris平台上就沒法make下去,除非你有gmake,但gmake對並行編譯的支援就沒有solaris內建的dmake要好了。

GNU autotools提供了一個不錯的選擇,可以做到組織工具鏈來產生所需的Makefile,但缺陷是學習起來比較麻煩,而且模版檔案寫起來比較費勁。老實說我跟Makefile打了近3年的交道,幾乎沒有自己寫過automake指令碼,相反的工作倒是幹了不少,譬如分析產生的Makefile運行過程,然後類比自己手寫Makefile;得到一個輕爽的定製環境。

除了autotools,其實也有不少其他的工具,譬如apache的ant,基於Python的scons;ant在java界是鼎鼎大名了,可惜對c++的支援確實讓我感覺很不習慣;scons號稱可以嵌入Python代碼,用起來也算簡單,但是想實現複雜的功能就很頭疼了,而且運行速度讓人撓頭。

cmake則彌補了上述幾個工具的諸多缺陷:
1> 易於學習,文檔易懂,只需牢記以下兩個命令即可:

cmake --help
cmake --help-command-list
cmake --help-command xxx
cmake --help-variable-list
cmake --help-variable yyy

2> 以文字檔組織,利用cache的方式,所有的自訂cache變數可直接用vim查看。
3> 產生的Makefile檔案簡潔易懂
4> 編譯器選項可自己在ccmake中編輯,利於交叉編譯
5> 支援整合ctest/cpack,前者可以方便的做單元測試,後者則可以打包產生tgz/rpm
6> 支援多個產生器,可以產生eclipse/codeblocks/gmake/unix make檔案,甚至可以產生VC各個版本的dsw/sln.
7> 內嵌語言,可以自己寫函數、宏等

對於經常寫小測試程式的人來說,在test目錄下加上個CMakeLists.txt,裡邊加上幾行簡單的語句就可以方便的以後重複使用了。對於這種情況,手工寫的Makefile碰到依賴檢測這種麻煩的事情往往力不從心,automake又太小題大作,而cmake則恰到好處了。

對於大型程式,cmake可以自己定製產生的中間檔案和目標檔案路徑,有效避免了automake帶來的每個目錄下產生一大堆檔案的弊端,也不需要手工寫Makefile。
最有用的是可以產生多個知名IDE的工程檔案,包括Windows下的vc6-vc9.

利用cmake來搭建開發環境

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.