對於大型項目來說,邊寫邊修改makefile中的.c文件是不效率的
makefile實現自動添加.c文件(全自動化編譯)。
$(wildcard 模式)
在當前目錄下匹配所有的相應模式的文件。
src = $(wildcard *.c) ,用於獲取所有.c文件。
$(src :%.c=%.o), 把src的.c全部替換為.o (這裡的%是通配符)
obj = $(src:%.c=%.o)
這裡的 %.o:%.c 意思是所有的.o文件的生成,都依賴於.c文件。替代了下邊用#注釋的那幾句指令。同理,當只執行make xxx.o 的時候,也會自動匹配到 %.o:%.c 上,執行xxx.c 到xxx.o 的編譯過程。如果有需要單獨編譯的部分,可以單獨寫出來。
makefile實現多個項目的編譯。
如果有多個.c文件需要編譯成可執行文件,可以用makefile進行批量操作。
這裡需要一個all 的偽目標。利用依賴關係。
all:$(EXF) 表示makefile 要生成 all, 就依賴於目錄下所有的可執行文件。
$(EXF):%:%.o 表示每生成一個可執行文件,依賴於其相對應的.o文件。
%.o:%.c 表示每生成一個.o文件,依賴於其相對應的.c文件。
這樣,就能保證生成了多個可執行文件。