私は2つのターゲットを定義するかなり簡単なテストMakefile
を書きました。すべて& cleanです。私は2つの異なる条件文を持っています。 1つは$(MAKECMDGOALS)
特殊変数の存在をチェックし、もう1つはコマンドラインターゲットのどれかが変数(NODEPS
)にリストされているものと一致するかどうかを検出します。私が抱えている問題は、私の条件文の中の分岐のどれも実行されないということです。最終的には、私が提供しているターゲットにいくつかの自動生成された依存ファイルを含めるべきかどうかを判断するために条件を使用したいと思いますが、現時点でどちらの式も評価するのに苦労しています。私はGNU make version 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)"
あなたは穀物に対して作業しているかのように聞こえます。変数を渡す場合は、変数ではなくターゲットとして渡します。依存ファイルをインクルードしたい場合は、それを 'include'してください。 – Beta