最近及后面很長一段時(shí)間會(huì)使用c++開發(fā)項(xiàng)目(小白),所以學(xué)習(xí)了cmake:c/c++跨平臺構(gòu)建工具,和java的maven屬于同一類工具。將本人學(xué)習(xí)內(nèi)容再此記錄一下,希望給大家一些幫助神僵。
Prerequisites:要在linux開發(fā)c++,在學(xué)cmake之前覆劈,需先學(xué)gcc保礼、Makefile,按順序來好一點(diǎn)责语。(項(xiàng)目規(guī)模小可以使用Makefile就很不錯(cuò)炮障。要想實(shí)現(xiàn)跨平臺開發(fā)使用cmake很不錯(cuò))
Github:cmakestudy
- Demo1-Demo7 CMake入門中介紹
- Demo1:單個(gè)源文件項(xiàng)目
- Demo2: 同一個(gè)目錄,多個(gè)源文件
- Demo3:多個(gè)目錄坤候,多個(gè)源文件
- Demo4:自定義編譯選項(xiàng)
- Demo5:安裝和測試
- Demo6:添加環(huán)境檢測
- Demo7:添加版本號
- Demo8:生成安裝包
- t2-t6 CMake Practice中介紹
- t2:多目錄編譯铝阐、安裝
- t3:安裝動(dòng)態(tài)庫和靜態(tài)庫
- t4:如何使用外部共享庫和頭文件
- t5:使用FIND_PACKAGE查找第三方模塊
- t6:自己實(shí)現(xiàn)模塊,并通過FIND_PACKAGE調(diào)用
什么是 CMake
你或許聽過好幾種 Make 工具铐拐,例如 GNU Make 徘键,QT 的 qmake 练对,微軟的 MS nmake,BSD Make(pmake)吹害,Makepp螟凭,等等。這些 Make 工具遵循著不同的規(guī)范和標(biāo)準(zhǔn)它呀,所執(zhí)行的 Makefile 格式也千差萬別螺男。這樣就帶來了一個(gè)嚴(yán)峻的問題:如果軟件想跨平臺,必須要保證能夠在不同平臺編譯纵穿。而如果使用上面的 Make 工具下隧,就得為每一種標(biāo)準(zhǔn)寫一次 Makefile ,這將是一件讓人抓狂的工作谓媒。
CMake就是針對上面問題所設(shè)計(jì)的工具:它首先允許開發(fā)者編寫一種平臺無關(guān)的 CMakeList.txt 文件來定制整個(gè)編譯流程淆院,然后再根據(jù)目標(biāo)用戶的平臺進(jìn)一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程句惯。從而做到“Write once, run everywhere”土辩。顯然,CMake 是一個(gè)比上述幾種 make 更高級的編譯配置工具抢野。一些使用 CMake 作為項(xiàng)目架構(gòu)系統(tǒng)的知名開源項(xiàng)目有 VTK拷淘、ITK、KDE指孤、OpenCV启涯、OSG 等 [1]。
在 linux 平臺下使用 CMake 生成 Makefile 并編譯的流程如下:
- 編寫 CMake 配置文件 CMakeLists.txt 恃轩。
- 執(zhí)行命令
cmake PATH
或者ccmake PATH
生成 Makefile 1 1ccmake
和cmake
的區(qū)別在于前者提供了一個(gè)交互式的界面结洼。。其中详恼,PATH
是 CMakeLists.txt 所在的目錄。 - 使用
make
命令進(jìn)行編譯引几。
推薦閱讀
- CMake入門:官方入門的翻譯版
- CMake Practice:很好
- CMake官網(wǎng)入門介紹
- Cmake官方文檔
- gcc昧互、makefile內(nèi)容還沒整理完