首先,這些東西都是跟編譯項目有關(guān)系的。它們之間的關(guān)系請從上至下一段一段地看:
GCC全稱是GNU Compiler Collection,是一個編譯套件。我們可以通過gcc/g++來編譯目標項目。
但是當項目結(jié)構(gòu)復雜時,通過gcc/g++命令直接編譯會出現(xiàn)非常多不便之處,于是出現(xiàn)了Makefile。
簡單地說Makefile就是一個包含一堆有條理的gcc/g++編譯命令的文件,便于提高開發(fā)者的工作效率。
Makefile是需要開發(fā)者自己手寫的。
那之前可以通過在終端輸入gcc/g++命令來編譯項目,現(xiàn)在有了Makefile,又要怎么用呢?
這就講到Make工具了。
(還是簡單地說吧,)Make工具就是“讀取”并執(zhí)行Makefile文件中的編譯指令,從而進行項目編譯。
當項目非常龐大,目錄結(jié)構(gòu)非常復雜時,手寫Makefile就是一件非??植赖氖虑榱耍阈枰诓煌哪夸浀紫聦懖煌腗akefile,這可能有非常多個。
這時候就有CMakelists來拯救開發(fā)者了。CMakelists可以通過更簡單的寫法來生成對應(yīng)的Makefile文件。
怎么生成呢?就是寫好CMakelists.txt之后,通過CMake工具生成。
類似Make工具的功能,CMake工具就是“讀取”并執(zhí)行CMakelists.txt文件中的語句,來生成對應(yīng)的Makefile。然后開發(fā)者就可以通過Make工具來“執(zhí)行”Makefile了。
CMake是一種跨平臺編譯工具,比make更為高級,使用起來要方便得多。CMake主要是編寫CMakeLists.txt文件,然后用cmake命令將CMakeLists.txt文件轉(zhuǎn)化為make所需要的makefile文件,最后用make命令編譯源碼生成可執(zhí)行程序或共享庫(so(shared object)).它的作用和qt的qmake是相似的。