一起學習CMake 01

2021-06-22 00:12:06 字數 2815 閱讀 8673

本節介紹cmake裡最常用的三個命令,分別是cmake_minimum_required; project; add_executable等。

cmake是個好東西,在使用vtk, itk, igstk, opencv, dcmtk等開源工具包時,是離不開cmake的,甚至有時你使用 fltk , qt等介面開發工具時,也經常會看到cmake,你會發現在好多目錄下會有乙個檔案」cmakelists.txt」,這個檔案就是使用cmake構建工程環境的重要檔案。了解一點關於cmake的內容,對使用以上提到的一些開源工具包是灰常有幫助的,而且你會發現,cmake用久了,你會覺得它是很可愛很好用的東西。

如果你檢索到了我關於cmake的這些文章時,我是假定你已經對cmake的作用有所了解。下面我們從最簡單的入手來看看cmake怎麼使用:寫乙個hellocmake.cpp檔案,裡面就簡單地輸出一行字串:」study cmake together - hello cmake!」,一起看看怎麼用cmake來構建工程。

然後,還要確保你的機子已經安裝了一種編譯器,我機子上安裝的是vs2008。你也可以選擇其他編譯器,建議用vs2008或以上版本的,個人覺得比較好用。

接著在你機子的某個盤裡建乙個新的資料夾,如我這裡的完整路徑是:d:\cmake\cmake-study\hellocmake; 然後在hellocmake資料夾裡建立乙個hellocmake.cpp檔案,裡面的**如下:

#include

int main()

然後在hellocmake資料夾裡建立乙個cmakelists.txt檔案,注意檔名不能是別的,必須叫這個名字。裡面的內容如下:

cmake_minimum_required(version 2.6)

project(hellocmake)

add_executable(hellocmake hellocmake.cpp)

接著在hellocmake的同級目錄裡建立乙個新的資料夾,就叫做hellocmake-bin,在我機子上的完整路徑是:d:\cmake\cmake-study\hellocmake-bin,你可以針對自己的目錄路徑對號入座。

然後開啟cmake程式,介面如圖(1):

圖(1)                                   

圖(2)

接著把包含cmakelists.txt和hellocmake.cpp檔案的完整路徑給」where is the source code」,把最後建立的hellocmake-bin目錄的完整路徑給」where to build the binaries」,然後按cofigure,介面如圖(2)。

configure完了以後,再按generate,直到所有的紅色選項都變成灰色為止。介面如圖(3)。然後開啟hellocmake-bin,你會發現原來空的資料夾裡面自動生成了好多檔案,如圖(4)。

圖(3) 

圖(4)

到此為止,工程構建完成,開啟hellocmake-bin目錄下的hellocmake.sln,裡面有三個工程,分別是:all_build;hellocmake;zero_check。這三個工程的大概作用如下(個人理解而已),hellocmake就不用說了,自己要建立的那個工程;all_build是管理整個專案的工程;zero_check是實時監視cmakelists.txt檔案變化的工程,一旦cmakelists.txt裡的內容發生了任何變化,zero_check就會告訴編譯器要重新構建整個工程環境。所以,你可以先把工程關掉,開啟cmakelists.txt檔案,更改裡面的內容以後,把根據以上說的步驟走一遍cmake;你也可以在編譯器環境(如vs2008)中更改cmakelists.txt檔案,然後直接f7編譯工程。如果你選擇後者,你會發現如圖(5)所示的現象發生。

另外乙個經常看某些童鞋問的,就是當彈出圖(6)所示的介面時要怎麼辦?能怎麼辦?介面上提示已經灰常清楚了,指定exe的路徑給它,然後點ok就可以了;出現這種情況的原因是你把沒有生成exe可執行檔案的工程設為啟動工程了,如圖(6)所示,你會發現all_build這個工程名字是黑體顯示的,表示它是啟動工程;或者你把生成exe可執行檔案的工程,如這裡的hellocmake右擊->設定為啟動工程,也不會出現如圖(6)所示的介面。

圖(5)

圖(6)

把cmakelists.txt裡的內容再羅列出來:

1. cmake_minimum_required(version 2.6)

2. project(hellocmake)

3. add_executable(hellocmake hellocmake.cpp)

第1行,cmake_minimum_required(version 2.6)這是對cmake版本的要求,基本上每個cmakelists.txt檔案裡都會有這句**,cmake_minimum_required是cmake裡的命令,可大寫小寫。version這個關鍵字必須是大寫,而且不能省略;2.6就是cmake的版本號,現在的版本是2.8.3。

第2行,project(hellocmake),project也是cmake的命令,裡面的引數hellocmake是你要生成的工程的名字,換句話說就是生成的***.sln或者***.dsw等工程專案檔案的名字。

第3行,add_executable(hellocmake hellocmake.cpp),add_executable同樣是cmake的命令,鏈結有關的原始檔,然後生成exe可執行檔案,這是這個命令的作用。第乙個引數是生成的exe檔案的檔名,一般與project裡的工程名一致,這樣編譯生成的檔案就分別是hellocmake.sln和hellocmake.exe,當然也可以不一樣。add_executable()後面的是乙個引數列表,可帶多個要編譯的檔名,中間以空格或回車等隔開,如可以加入:

add_executable(hellocmake hellocmake.cpp hellocmake.h)

一起學習CMake 03

乙個團隊共同開發軟體時,一般都是分模組進行作業的,每個人負責整個軟體中的一部分,然後再整合成乙個完整的軟體系統。具體的做法一般是某個人開發的東西是以鏈結庫的形式供團隊中的其他人進行呼叫,或者供本人負責的程式的其他模組進行呼叫。比如,a童鞋開發了一種演算法,能做數a與數b的加法運算,a童鞋把它編譯成l...

開源一起學習

要想自己學習機器學習,3本 聖經 是一定要看的 花書,西瓜書,和統計學習方法 但不是剛入門就要看的,首先啊,我們必須學好學校教的c語言,對程式設計有乙個初步的了解,其次,我們都知道python的厲害,可以幹很多事,也很出名,這就出現了人人都知道py,但不是人人都懂py的現象。確實要想搞機器學習,你最...

一起學習extjs( )

可以說,extjs是系統類專案最好的ui 前端使用者介面 選擇,特別是自從extjs4.0出來後,不管是 美觀還是效能的提高,及其功能之強大,說它排第一,無可厚非。當然,最近也蠻流行easyui這個輕量級的,據說是國人開發的ui。其實,也是很不錯的。大家可以根據自己專案的情況來進行選擇。然後,我們自...