1. 程式人生 > >使用gcc命令編譯多個文件

使用gcc命令編譯多個文件

生成 src cloud 多個 .bat pan del 準備 後綴名

使用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命令編譯多個文件