關於gcc、make和CMake的區別


CMake是一種跨平台編譯工具,比make更為高級,使用起來要方便得多。CMake主要是編寫CMakeLists.txt文件,然后用cmake命令將CMakeLists.txt文件轉化為make所需要的makefile文件,最后用make命令編譯源碼生成可執行程序或共享庫(so(shared object)).它的作用和qt的qmake是相似的。

作者:輝常哥

鏈接:https://www.zhihu.com/question/36609459/answer/89743845
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

1.gcc是GNU Compiler Collection(就是GNU編譯器套件),也可以簡單認為是編譯器,它可以編譯很多種編程語言(括C、C++、Objective-C、Fortran、Java等等)。

2.當你的程序只有一個源文件時,直接就可以用gcc命令編譯它。

3.但是當你的程序包含很多個源文件時,用gcc命令逐個去編譯時,你就很容易混亂而且工作量大

4.所以出現了make工具
make工具可以看成是一個智能的批處理工具,它本身並沒有編譯和鏈接的功能,而是用類似於批處理的方式—通過調用makefile文件中用戶指定的命令來進行編譯和鏈接的。

5.makefile是什么?簡單的說就像一首歌的樂譜,make工具就像指揮家,指揮家根據樂譜指揮整個樂團怎么樣演奏,make工具就根據makefile中的命令進行編譯和鏈接的。

6.makefile命令中就包含了調用gcc(也可以是別的編譯器)去編譯某個源文件的命令。

7.makefile在一些簡單的工程完全可以人工手下,但是當工程非常大的時候,手寫makefile也是非常麻煩的,如果換了個平台makefile又要重新修改。

8.這時候就出現了Cmake這個工具,cmake就可以更加簡單的生成makefile文件給上面那個make用。當然cmake還有其他功能,就是可以跨平台生成對應平台能用的makefile,你不用再自己去修改了。

9.可是cmake根據什么生成makefile呢?它又要根據一個叫CMakeLists.txt文件(學名:組態檔)去生成makefile。

10.到最后CMakeLists.txt文件誰寫啊?親,是你自己手寫的。

11.當然如果你用IDE,類似VS這些一般它都能幫你弄好了,你只需要按一下那個三角形

12.cmake是make maker,生成各種可以直接控制編譯過程的控制器的配置文件,比如makefile、各種IDE的配置文件。
13.make是一個簡單的通過文件時間戳控制自動過程、處理依賴關系的軟件,這個自動過程可以是編譯一個項目。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM