有没有办法使用本机Makefile if-else条件并且还要考虑特定于目标的变量重新分配?
示例Makefile:
#!/usr/bin/make
CONFIG = Debug
.PHONY: test printme
test: override CONFIG=Release
test: printme
@echo "Done."
printme:
ifeq "$(CONFIG)" "Debug"
@echo "should be DEBUG -> $(CONFIG)"
else
@echo "should be RELEASE -> $(CONFIG)"
endif
运行make test
会输出以下输出:
should be DEBUG -> Release
Done.
我正在寻找的输出是should be RELEASE -> Release
我该如何实现?我需要使用shell条件吗?
答案 0 :(得分:3)
这种行为对我来说似乎合乎逻辑:在解析Makefile时,CONFIG
被定义为Debug
。 ifeq
条件使用它当时知道的CONFIG
值。因此,它选择输出“应该是DEBUG”的ifeq
分支。
目标特定变量仅定义为Release
,目标为test
。其先决条件printme
也知道特定于目标的变量和输出Release
。
我建议你在命令行上将变量设置为make
以达到你想要的目的。在调用make
时,要编写的字符不多,但是会让您看起来很愿意。
make CONFIG=Release