首先,這些東西都是跟編譯項(xiàng)目有關(guān)系的。它們之間的關(guān)系請(qǐng)從上至下一段一段地看:
1.GCC
GCC全稱是GNU Compiler Collection,是一個(gè)編譯套件。我們可以通過(guò)gcc/g++來(lái)編譯目標(biāo)項(xiàng)目。
但是當(dāng)項(xiàng)目結(jié)構(gòu)復(fù)雜時(shí),通過(guò)gcc/g++命令直接編譯會(huì)出現(xiàn)非常多不便之處,于是出現(xiàn)了Makefile。
2.Makefile
簡(jiǎn)單地說(shuō)Makefile就是一個(gè)包含一堆有條理的gcc/g++編譯命令的文件,便于提高開發(fā)者的工作效率。
Makefile是需要開發(fā)者自己手寫的。
那之前可以通過(guò)在終端輸入gcc/g++命令來(lái)編譯項(xiàng)目,現(xiàn)在有了Makefile,又要怎么用呢?
這就講到Make工具了。
3.Make
(還是簡(jiǎn)單地說(shuō)吧,)Make工具就是“讀取”并執(zhí)行Makefile文件中的編譯指令,從而進(jìn)行項(xiàng)目編譯。
4.CMakelists
當(dāng)項(xiàng)目非常龐大,目錄結(jié)構(gòu)非常復(fù)雜時(shí),手寫Makefile就是一件非常恐怖的事情了,你需要在不同的目錄底下寫不同的Makefile,這可能有非常多個(gè)。
這時(shí)候就有CMakelists來(lái)拯救開發(fā)者了。CMakelists可以通過(guò)更簡(jiǎn)單的寫法來(lái)生成對(duì)應(yīng)的Makefile文件。
怎么生成呢?就是寫好CMakelists.txt之后,通過(guò)CMake工具生成。
5.CMake
類似Make工具的功能,CMake工具就是“讀取”并執(zhí)行CMakelists.txt文件中的語(yǔ)句,來(lái)生成對(duì)應(yīng)的Makefile。然后開發(fā)者就可以通過(guò)Make工具來(lái)“執(zhí)行”Makefile了。