Makefile簡介
Makefile是一種用于構建C/C++程序的文件,其中包含了項目中所有源文件、頭文件以及編譯器和鏈接器指令。使用Makefile可以使編譯和鏈接成為一個自動化的過程,這樣就可以方便地管理復雜的項目。
以下是一個簡單的Makefile示例:
CC=g++
CFLAGS=-Wall -O2
LDFLAGS=
SOURCES=main.cpp file1.cpp file2.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=programall: $(SOURCES) $(EXECUTABLE)$(EXECUTABLE): $(OBJECTS)$(CC) $(LDFLAGS) $(OBJECTS) -o $@.cpp.o:$(CC) $(CFLAGS) -c $< -o $@clean:rm -f $(OBJECTS) $(EXECUTABLE)
在這個示例中,CC
變量指定了編譯器,CFLAGS
變量指定了編譯選項,LDFLAGS
變量指定了鏈接選項,SOURCES
變量指定了所有源文件,OBJECTS
變量則表示所有目標文件,EXECUTABLE
變量則表示最終生成的可執行文件。
在Makefile中,有幾個重要的關鍵字:
all
:默認目標,通常用于生成整個項目。$(SOURCES)
:依賴項,表示目標需要哪些文件或者其他目標才能被生成。$(EXECUTABLE)
:目標,表示需要生成的文件或者其他目標。$(OBJECTS)
:中間目標,表示需要生成的中間文件或者目標。$(CC)
:變量,表示使用的編譯器。$(CFLAGS)
:變量,表示編譯選項。$(LDFLAGS)
:變量,表示鏈接選項。.cpp.o
:規則,指定如何生成中間文件或者目標。
在使用Makefile時,首先需要確保已經安裝了GNU Make程序。然后,在項目根目錄下創建一個名為Makefile的文件,并將上述示例代碼復制到其中。接下來,可以在終端中進入項目根目錄,并輸入以下命令:
make
這將會自動編譯和鏈接所有源文件,生成可執行文件。如果需要重新編譯項目,只需要輸入以下命令即可:
make clean
make
這將會清除所有中間文件和可執行文件,然后重新編譯和鏈接項目。
總體來說,使用Makefile可以使項目的管理和構建變得更加方便和高效。
CFLAGS=-Wall -O2
CFLAGS
變量設置了編譯選項-Wall
和-O2
。這些選項用于開啟警告信息和進行優化。