一 簡介:
CMake是一個跨平台的安裝(編譯)工具,可以用簡單的語句來描述所有平台的安裝(編譯過程)。他能夠輸出各種各樣的makefile或者project文件,能測試編譯器所支持的C++特性,類似UNIX下的automake。只是 CMake 的組態檔取名為 CMakeLists.txt。Cmake 並不直接建構出最終的軟件,而是產生標准的建構檔(如 Unix 的 Makefile 或 Windows Visual C++ 的projects/workspaces),然后再依一般的建構方式使用。這使得熟悉某個集成開發環境(IDE)的開發者可以用標准的方式建構他的軟件,這種可以使用各平台的原生建構系統的能力是 CMake 和 SCons 等其他類似系統的區別之處。
二 特點:
1. 開放源代碼,使用類 BSD 許可發布。http://cmake.org/HTML/Copyright.html
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 功能。
三 編譯:
1. 編寫 CMake 配置文件 CMakeLists.txt 。
2. 執行命令 cmake PATH 或者 ccmake PATH 生成 Makefile。其中, PATH 是 CMakeLists.txt 所在的目錄。
3. 使用 make 命令進行編譯。
四 建議:
1,如果你沒有實際的項目需求,那么看到這里就可以停下來了,因為 cmake 的學習過程就
是實踐過程,沒有實踐,讀的再多幾天后也會忘記。
2,如果你的工程只有幾個文件,直接編寫 Makefile 是最好的選擇。
3,如果使用的是 C/C++/Java 之外的語言,請不要使用 cmake(至少目前是這樣) 4,如果你使用的語言有非常完備的構建體系,比如 java 的 ant,也不需要學習 cmake,
雖然有成功的例子,比如 QT4.3 的 csharp 綁定 qyoto。
4,如果僅僅使用 qt 編程,沒有必要使用 cmake,因為 qmake 管理 Qt 工程的專業性和自 動化程度比 cmake 要高很多。
5,如果項目已經采用了非常完備的工程管理工具,並且不存在維護問題,沒有必要遷移到cmake
五 參考:
1 博客:
https://blog.csdn.net/xierhacker/article/details/79445339?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=867b55e2-befc-4e0b-85ac-8c27ef3c2e31&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control
2 書籍:cmake實踐