標籤:style blog color 使用 os 檔案 ar div
INCLUDE+=-I./Include -I/usr/local/include/libxml2 -I/usr/local/ssl/include -I/usr/local/include TARGET=Agent LIB=-lstdc++ -lrt -lpthread -lxml2 OBJS:=$(patsubst %.cpp,%.o,$(wildcard *.cpp)) $(TARGET):${OBJS} $(CC) $^ $(LIB) -g -o [email protected].cpp.o: $(CC) $(FLAGS) $(INCLUDE) -g -o [email protected] -c $<clean: rm -rf $(TARGET) rm -f $(OBJS)#########################################
rm命令:
-f 忽略不存在的檔案,從不給出提示。
-r, -R 指示rm將參數中列出的全部目錄和子目錄均遞迴地刪除。
一般我們可以使用“$(wildcard *.c)”來擷取工作目錄下的所有的.c檔案清單。複雜一些用法;可以使用“$(patsubst %.c,%.o,$(wildcard *.c))”,首先使用“wildcard”函數擷取工作目錄下的.c檔案清單;之後將列表中所有檔案名稱的尾碼.c替換為.o。這樣我們就可以得到在目前的目錄可產生的.o檔案清單。
patsubst 應該是 makefile 裡的一個函數 (如果你問的 patsubst 是其他語言裡的,那就別看下面的了)
比方說你在 makefile 裡定義了一個變數,內容是一堆 .c 檔案的的名字,如
SRC = aaa.c bbb.c my.c his.c
你可以用 patsubst 根據 某種模式,將這些名字改成另外的,比如將這些 .c 檔案的名字變成 .s 為尾碼的名字:
NEW = $(patsubst "%.c", "%.s", ${SRC})
這樣 NEW 這個變數中,就記錄了 aaa.s bbb.s my.s his.s 這些尾碼名為 .s 的檔案。 上面命令中的模式字串就是 "%.c" 或 "%.s", 而其中的 "%" 就是特殊的匹配字元,對於 aaa.c 這個字串來說, "%.c" 中的% 就匹配 aaa。 這個很像我們在 bash 或者 dos 下用 *.c 匹配所有 .c 檔案時候的那個 *