Introduction
1、$(wildcard pattern) :擴展通配符
2、$(notdir names…) :去除路徑
3、$(patsubst pattern,replacement,text) :替換通配符
Learn by example
建立一個測試目錄,在測試目錄下建立一個名為 sub 的子目錄:
在 test 下,建立 a.c 和 b.c2 個文件,在sub目錄下,建立 sa.c 和 sb.c2 個文件.
接著建立一個簡單的測試 Makefile:
- SRC = $(wildcard *.c ./sub/*.c)
- DIR = $(notdir $(SRC))
- OBJ = $(patsubst %.c, %.o, $(DIR))
- all:
- @echo $(SRC)
- @echo $(DIR)
- @echo $(OBJ)
- @echo "end"
第一行的 "a.c ./sub/sa.c" 為 wildcard 展開的結果; 第二行的 "a.c sa.c" 為 notdir 將第一行結果的目錄資訊拿掉, 只留下檔名; 第三行的結果 "a.o sa.o" 是透過 patsubst 將 ".c" 結尾的項目換成 ".o".
Supplement
* GNU Make Doc - Functions for File Names
* GNU Make Doc - Functions for String Substitution and Analysis
沒有留言:
張貼留言