CMakeLists入門學習筆記

2021-07-28 02:27:48 字數 1735 閱讀 5852

cmake是乙個工程構建工具,能夠自動生產makefile檔案,方便構建編譯檔案,鏈結庫,安裝檔案等。

2,跨平台,並可生成 native 編譯配置檔案,在 linux/unix 平台,生成 makefile,在

蘋果平台,可以生成 xcode,在 windows 平台,可以生成 msvc 的工程檔案。

3,能夠管理大型專案,kde4 就是最好的證明。

4,簡化編譯構建過程和編譯過程。cmake 的工具鏈非常簡單:cmake+make。

5,高效慮,按照 kde 官方說法,cmake 構建 kde4 的 kdelibs 要比使用 autotools 來

構建 kde3.5.6 的 kdelibs 快 40%,主要是因為 cmake 在工具鏈中沒有 libtool。

6,可擴充套件,可以為 cmake 編寫特定功能的模組,擴充 cmake 功能。

cmake基本語法規則:

前面提到過,cmake 其實仍然要使用」cmake 語言和語法」去構建,上面的內容就是所謂的」cmake 語言和語法」,最簡單的語法規則是:

1,變數使用${}方式取值,但是在 if 控制語句中是直接使用變數名

2,指令(引數 1 引數 2…)

引數使用括弧括起,引數之間使用空格或分號分開。

3,指令是大小寫無關的,引數和變數是大小寫相關的。但,推薦你全部使用大寫指令。

每個需要編譯的目錄(子目錄)都要有乙個cmakelists.txt檔案

在工程目錄下的cmakelists.txt檔案稱作工程cmake檔案,在這個檔案裡需要指出工程名字,需要編譯的子目錄,例如:

這個指令隱式的定義了兩個 cmake 變數:

==_binary_dir== 以及 ==_source_dir==。

前者表示編譯輸出的路徑;後者表示工程所在的路徑。

接下來給出乙個在子目錄的cmakelists.txt檔案

)

link_directories(/usr/lib /lib/local/lib)

target_link_libraries(crnode log4cpp thrift)

message(status "this is binary dir " $)

message(status "this is source dir " $)

install(targets crnode

runtime destination bin

)

}

注:

假設我們此時已經完成了兩個cmakelists.txt檔案的編寫,可以執行cmake命令生成makefile檔案了。此時我們由兩種方法可以執行cmake、編譯和安裝:

cmake .

make

或者

mkdir build

cd build

cmake ..

make

兩種方法最大的不同在於執行cmake和make的工作路徑不同。

第一種方法中,cmake生成的所有中間檔案和可執行檔案都會存放在專案目錄中,稱為「內部構建」

而第二種方法中,中間檔案和可執行檔案都將存放再build目錄中。稱為「外部構建」。

cmake強烈推薦使用外部構建的方法。

CMakeLists檔案規劃學習

在學習他人 的過程中了解到一些cmakelists的使用技巧,所以進行乙個簡單總結 呼叫乙個包,就是常規的三個步驟 find package,include directions,target link libraries 包多的時候 太雜,所以我們需要把每個包對應的這些操作放在cmake資料夾下對...

Ceres學習筆記之CMakeLists寫法總結

高博說 不要長期徘徊在自己的舒適區里猶豫不決,這樣是沒有進步的。這句話開啟了我的slam後端優化學習之路。本文從cmakelists開始,總結常用的各個庫在cmakelists中的寫法。眾人 哇!又是這麼小兒科的嗎?博主 哎呀 不要這樣講嘛 qwq我會一直努力的 通常的cmakelists結構是 c...

CmakeLists學習備忘錄

cmakelists不區分大小寫 代表注釋,一句話一行 cmake minimum required version project ps 不是強制性的,最好加上,這會引入兩個變數 binary dir,source dir外部編譯要時刻區分這兩個變數對應的目錄 例如 設定cpp檔案列表 set s...