有没有一种方法可以使用本机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被定义为Debugifeq条件使用当时知道的CONFIG值。因此,它选择输出“ Should be DEBUG”的ifeq分支。

目标特定变量仅与目标Release一起定义为test。它的先决条件printme还知道特定于目标的变量和输出Release



我可以建议您根据需要在命令行上将变量设置为make。调用make时不需要写更多的字符,但是会带来您似乎愿意的所有字符。

make CONFIG=Release

关于makefile - Makefile是有条件的,不遵守特定于目标的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26251557/

10-12 00:43
查看更多