我寫了一個相當簡單的測試Makefile
,其中我定義了兩個目標,全部都是& clean。我有兩個不同的條件陳述。檢查是否存在$(MAKECMDGOALS)
特殊變量,另一個檢測是否有任何命令行目標匹配變量(NODEPS
)中列出的目標。我遇到的問題是我的條件中的任何分支都不會執行。最終,我想用一個條件來決定我提供的目標是否應該包含一些自動生成的依賴文件,但目前我正努力讓這兩個表達式甚至可以評估。我正在運行GNU make 3.81版本,我已經在Ubuntu和Mac OS X下嘗試過了,但無濟於事。在GNU Make中使用ifeq和ifndef製作
NODEPS := clean
INCLUDE = $(filter $(NODEPS),$(MAKECMDGOALS))
.PHONY : all clean
ifndef $(MAKECMDGOALS)
@echo "$$(MAKECMDGOALS) is not defined"
else
@echo "$(MAKECMDGOALS) is defined"
endif
ifneq (0, $(words $(INCLUDE)))
@echo "INCLUDE = $(INCLUDE) != 0"
else
@echo "INCLUDE = $(INCLUDE) == 0"
endif
all :
@echo "all : $(MAKECMDGOALS)"
clean :
@echo "clean : $(MAKECMDGOALS)"
這聽起來好像你對糧食工作。如果你想傳入一個變量,把它作爲變量傳入,而不是作爲目標。如果你想包含一個依賴文件,就包含它。 – Beta