C編譯:make和cmake的區別


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文件誰寫啊?親,是你自己手寫的。

寫程序大體步驟為:

1.用編輯器編寫源代碼,如.c文件。

2.用編譯器編譯代碼生成目標文件,如.o。

3.用鏈接器連接目標代碼生成可執行文件,如.exe。

但如果源文件太多,一個一個編譯時就會特別麻煩,於是人們想到,為什么不設計一種類似批處理的程序,來批處理編譯源文件呢,於是就有了make工具,它是一個自動化編譯工具,你可以使用一條命令實現完全編譯。但是你需要編寫一個規則文件,make依據它來批處理編譯,這個文件就是makefile,所以編寫makefile文件也是一個程序員所必備的技能。

對於一個大工程,編寫makefile實在是件復雜的事,於是人們又想,為什么不設計一個工具,讀入所有源文件之后,自動生成makefile呢,於是就出現了cmake工具,它能夠輸出各種各樣的makefile或者project文件,從而幫助程序員減輕負擔。但是隨之而來也就是編寫cmakelist文件,它是cmake所依據的規則。所以在編程的世界里沒有捷徑可走,還是要腳踏實地的。

所以流程如下:

cmake中有很多設置庫的,此時還不是可執行文件

而make生成后才是二進制可執行文件

 

相關文檔:https://www.cnblogs.com/lsgxeva/p/9454443.html


免責聲明!

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



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