如何製作一個簡單的C Makefile
問題:
我們需要建立一個Makefile 來管理我們的C 項目,但我們還沒有被教導如何這樣做。此專案由一個檔案 a3driver.cpp 組成,該檔案從 /user/cse232/Examples/example32.sequence.cpp 匯入一個類別。
解決方案:
1.基本Makefile:
a3a.exe: a3driver.cpp example32.sequence.cpp g++ -g -o a3a.exe a3driver.cpp example32.sequence.cpp
此Makefile 宣告可執行檔依賴原始檔a3driver.cpp 和example32.sequence.cpp。執行時會執行指令將程式編譯成可執行檔。
2.使用內建規則:
CC=g++ CPPFLAGS=-g a3a.exe: a3driver.o example32.sequence.o $(CC) $(LDFLAGS) -o a3a.exe a3driver.o example32.sequence.o a3driver.o: a3driver.cpp $(CC) $(CPPFLAGS) -c a3driver.cpp example32.sequence.o: example32.sequence.cpp $(CC) $(CPPFLAGS) -c example32.sequence.cpp
此 Makefile 使用內建規則來簡化編譯指令。它將 CC 變數定義為 C 編譯器,並將 CPPFLAGS 變數定義為具有公共編譯標誌。依賴項仍然是明確定義的,但編譯命令是自動產生的。
3.使用自動產生的依賴項:
CC=g++ CPPFLAGS=-g a3a.exe: a3driver.o example32.sequence.o $(CC) $(LDFLAGS) -o a3a.exe a3driver.o example32.sequence.o depend: .depend .depend: $(SRCS) $(CC) $(CPPFLAGS) -MM $^ > .depend; .PHONY: clean clean: rm -f a3driver.o example32.sequence.o .depend include .depend
此 Makefile 使用內建 -MM 標誌自動產生依賴項。 dependent 目標執行產生具有相依性的檔案 .depend 的指令。 .PHONY: clean 目標是個特殊目標,其實不是文件或規則。 clean 目標會刪除目標檔案和 .depend 檔案。
以上是如何為單一檔案專案建立簡單的 C Makefile?的詳細內容。更多資訊請關注PHP中文網其他相關文章!