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所依據的規則。
流程圖:
抽象層次圖: