使用gcc命令編譯多個文件
使用g++命令直接一次性編譯多個文件
這裏以簡單的HelloWorld程序為例,假設我們一共有三個文件:main.cpp,HelloWorld.cpp和HelloWorld.h. 其中HelloWorld.cpp中有一個打印HelloWorld的程序並在.h文件中聲明,main.cpp通過包含.h文件調用打印HelloWorld程序。 準備文件。
我們可以直接在cmd命令行中輸入如下命令進行編譯(直接在文件夾的目錄欄中輸入cmd即可打開cmd並定位到該文件夾):
g++ main.cpp HelloWorld.cpp -o hello
這時就會在同一文件夾下生成一個hello.exe文件。
使用g++命令分別編譯和鏈接
在cmd命令中依次輸入如下命令:
g++ -c main.c g++ -c HelloWorld.c g++ main.o HelloWorld.o -o hello
可以看到在文件夾中除了生成一個hello.exe文件之外,還有前兩個步驟生成的中間文件——main.o和HelloWorld.o. 如果不想要中間文件接下來還可以使用 ``del main.o HelloWorld.o`` 將中間文件刪除(del是windows下的命令)。
使用makefile文件
對於一個大型的項目,裏面可能有很多個文件。這時候如果每次編譯都使用上面的方法顯然是不切實際的。 這時候我們可以借助makefile文件,只需要寫一次就可以進行多次編譯,如果文件有增刪直接修改makefile文件即可。 首先新建一個makefile文件(註意沒有後綴名),然後用notpad++等文本編輯器在其中加入以下代碼:
# 文件名: makefile SHELL=cmd.exe OBJS=main.o HelloWorld.o main: $(OBJS) g++ -o hello $(OBJS) main.o:main.cpp HelloWorld.h g++ -c main.cpp HelloWorld.o: HelloWorld.cpp HelloWorld.h g++ -c HelloWorld.cpp clean: del $(OBJS)
需要註意的是在windows下需要將SHELL切換到windows下的cmd,不然不能運行del命令。 我的電腦上安裝的是MinGW,由於我需要使用MinGW/bin下的mingw32-make命令,所以需要將bin文件夾添加到環境變量裏。 然後在cmd命令行中輸入如下命令:
mingw32-make
這時候就會在文件夾中生成hello.exe文件和相關的中間文件。如果需要刪除中間文件再執行如下命令即可:
mingw32-make clean
如果我們需要自動編譯多個文件同時編譯過後自動刪除中間文件,最後給出編譯完成的提示信息,我們也可以使用windows下的bat腳本。 編寫bat腳本如下:
:: 文件名: make.bat echo off mingw32-make echo HelloWorld編譯完畢 mingw32-make clean echo 刪除中間文件完畢 ::執行編譯後的文件 hello.exe echo 文件執行完畢
之後我們直接在cmd命令行中輸入 make
,批處理文件就會自動幫我們執行相關命令並給出提示:
這樣我們在編寫完文件以後,只需要一個 cmd
和一個 make
就可以讓編譯、刪除中間文件、執行輸出文件自動執行了。
使用gcc命令編譯多個文件