有没有一种方法可以使用本机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条件语句? 最佳答案
在我看来,这种行为是合乎逻辑的:在解析Makefile时,CONFIG
被定义为Debug
。 ifeq
条件使用当时知道的CONFIG
值。因此,它选择输出“ Should be DEBUG”的ifeq
分支。
目标特定变量仅与目标Release
一起定义为test
。它的先决条件printme
还知道特定于目标的变量和输出Release
。
我可以建议您根据需要在命令行上将变量设置为make
。调用make
时不需要写更多的字符,但是会带来您似乎愿意的所有字符。
make CONFIG=Release
关于makefile - Makefile是有条件的,不遵守特定于目标的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26251557/