Make
在 Makefile 中標記目標後更改
我看到一行makefile如下:
$(LAST_TARGET_DIR)/%: LFLAGS += -lpthread -lrt -Wl,-uevaluate
在我的理解中,
$(LAST_TARGET_DIR)/%
是一個目標匹配,在目標之後應該是它的依賴。為什麼在這裡更改連結標誌?
這是 GNU make 的一個特性,它允許對一個特定的目標或模式使用不同的變數值。
例如,
LFLAGS = -lm $(LAST_TARGET_DIR)/%: LFLAGS += -lpthread %.exe: %.o common.o $(CC) -o $@ common.o $(@:%.exe=%.o) $(LFLAGS)
導致每個
.exe
文件都與 連結-lm
,除了目錄中的文件$(LAST_TARGET_DIR)
將與 連結-lm -lpthreads
。