HelloWorld: main.o print.o
g++ -o HelloWorld print.o main.o
main.o: main.cpp print.h
g++ -o main.o main.cpp # 錯誤:未加 -c,嘗試生成可執行文件
print.o: print.cpp print.h
g++ -o print.o print.cpp # 同理
報錯:`/usr/lib/.../crt1.o:在函數‘_start’中:對‘main’未定義的引用` —— 因編譯器嘗試鏈接生成可執行文件 `main.o`,但 `main.cpp` 無 `main` 函數(在 `print.cpp` 中)。
CXX = g++
CXXFLAGS = -Wall -g
HelloWorld: main.o print.o
$(CXX) -o HelloWorld main.o print.o
main.o: main.cpp print.h
$(CXX) $(CXXFLAGS) -c main.cpp -o main.o # -c 僅編譯不鏈接
print.o: print.cpp print.h
$(CXX) $(CXXFLAGS) -c print.cpp -o print.o
clean:
rm -f *.o HelloWorld
-c:僅預處理、編譯、匯編,**生成目標文件 (.o)**,不進行鏈接。-o:指定輸出文件名(此處指定 `.o` 文件)。