Make和CMake


1、gcc

  gcc main.c是生成可執行文件(包括編譯和鏈接),可執行文件名默認為a.out,可以加上-o指定生成的可執行文件名:gcc main.c -o ma。

  gcc main.c實際上相當於兩條語句:gcc -c main.c(生成目標文件main.o) + gcc main.o(鏈接生成可執行文件a.out,指定生成的可執行文件名的話為gcc main.o -o name)。

  gcc編譯兩個文件:gcc func1.c func2.c -o fun

2、Make

  使用gcc編譯多個文件或者一個龐大項目的話使用gcc就很麻煩,這時候可以用make命令工具,使用make需要先生成一個makefile文件,在這個文件中包含要創建的目標文件或可執行文件、創建目標文件所依賴的文件和需要運行的命令、編譯順序等信息,make通過讀入和解釋Makefile中內容來執行gcc/g++編譯工作。使用make的另一個優點就是如果有一個文件修改了,那么它能使該文件和所有受影響的文件進行重新編譯,而不受影響的文件就不必重新編譯,這樣就節省了編譯時間。

  大多數的IDE都有make這個命令,比如Linux下GNU的make,Visual C++的nmake。

3、CMake

  cmake是更高級的跨平台項目管理工具, 它可以根據不同平台、不同的編譯器,生成相應的Makefile(在Windows下即為vcproj項目文件)。

  qmake是Qt的項目管理工具,對應的工程文件是*.pro,在Linux下面它也會生成Makefile。

4、GCC-> Make -> CMake

  寫程序大體步驟為:

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

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

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

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

  編寫makefile實在是件復雜的事,於是人們又想,為什么不設計一個工具,讀入所有源文件之后,自動生成makefile呢,於是就出現了cmake工具,它能夠輸出各平台對應的makefile或者project文件, 從而幫助程序員減輕負擔。雖然不用編寫makefile了,但是隨之而來也就是編寫cmakelist文件,它是cmake所依據的規則。

  流程圖:

  

  抽象層次圖:

   


免責聲明!

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



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