Cmake入門第一課

2021-06-19 10:32:53 字數 2903 閱讀 4774

2011-01-07 14:38:17

|  分類:

cmake

|  標籤:

cmake|字型大小

訂閱 本節介紹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)

Python入門第一課

程式設計的本質是什麼?改變記憶體的狀態 1.python是強型別語言,python變數的定義是不需要指定資料型別的 注意 宣告變數時 要注意 變數名不能和python本身自帶的方法名一致,否則會覆蓋掉python自帶的方法 導致專案出錯 具體檢視幫助文件 如 python的基本資料型別 counte...

HTML入門第一課

html hyper text markup language 稱為超文字標記語言,是一種標識性的語言。它包括一系列標籤 通過這些標籤可以將網路上的文件格式統一,使分散的internet資源連線為乙個邏輯整體。根據個人的理解,可以簡單地將html理解為一種特殊的文件,瀏覽器可以依據文件的標籤,將其解...

oc入門第一課

對今天所學內容進行回顧並總結如下 一 對xcode的認識 1 xcode是對一些軟體開發工具進行整合封裝的整體,支援c oc等多種語言的編寫與除錯 2 xcode支援 的編寫 編譯 除錯 設定斷點 自動補全等功能。二 oc中的類 1 oc中包含類 物件和方法 2 類是一種特殊的結構體,在 inter...