CMake是一種跨平臺編譯工具,比make更爲高級,使用起來要方便得多。CMake主要是編寫CMakeLists.txt文件,而後用cmake命令將CMakeLists.txt文件轉化爲make所須要的makefile文件,最後用make命令編譯源碼生成可執行程序或共享庫(so(shared object)).它的做用和qt的qmake是類似的。
編程
做者:輝常哥編程語言
1.gcc是GNU Compiler Collection(就是GNU編譯器套件),也能夠簡單認爲是編譯器,它能夠編譯不少種編程語言(括C、C++、Objective-C、Fortran、Java等等)。工具
2.當你的程序只有一個源文件時,直接就能夠用gcc命令編譯它。spa
3.可是當你的程序包含不少個源文件時,用gcc命令逐個去編譯時,你就很容易混亂並且工做量大編譯器
4.因此出現了make工具
make工具能夠當作是一個智能的批處理工具,它自己並無編譯和連接的功能,而是用相似於批處理的方式—經過調用makefile文件中用戶指定的命令來進行編譯和連接的。源碼
5.makefile是什麼?簡單的說就像一首歌的曲譜,make工具就像指揮家,指揮家根據曲譜指揮整個樂團怎麼樣演奏,make工具就根據makefile中的命令進行編譯和連接的。qt
6.makefile命令中就包含了調用gcc(也能夠是別的編譯器)去編譯某個源文件的命令。io
7.makefile在一些簡單的工程徹底能夠人工手下,可是當工程很是大的時候,手寫makefile也是很是麻煩的,若是換了個平臺makefile又要從新修改。編譯
8.這時候就出現了Cmake這個工具,cmake就能夠更加簡單的生成makefile文件給上面那個make用。固然cmake還有其餘功能,就是能夠跨平臺生成對應平臺能用的makefile,你不用再本身去修改了。gcc
9.但是cmake根據什麼生成makefile呢?它又要根據一個叫CMakeLists.txt文件(學名:組態檔)去生成makefile。
10.到最後CMakeLists.txt文件誰寫啊?親,是你本身手寫的。
11.固然若是你用IDE,相似VS這些通常它都能幫你弄好了,你只須要按一下那個三角形 12.cmake是make maker,生成各類能夠直接控制編譯過程的控制器的配置文件,好比makefile、各類IDE的配置文件。
13.make是一個簡單的經過文件時間戳控制自動過程、處理依賴關係的軟件,這個自動過程能夠是編譯一個項目。