Makefile条件不遵守特定于目标的变量

时间:2014-10-08 07:38:38

标签: makefile

有没有办法使用本机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条件吗?

1 个答案:

答案 0 :(得分:3)

这种行为对我来说似乎合乎逻辑:在解析Makefile时,CONFIG被定义为Debugifeq条件使用它当时知道的CONFIG值。因此,它选择输出“应该是DEBUG”的ifeq分支。

目标特定变量仅定义为Release,目标为test。其先决条件printme也知道特定于目标的变量和输出Release


我建议你在命令行上将变量设置为make以达到你想要的目的。在调用make时,要编写的字符不多,但是会让您看起来很愿意。

make CONFIG=Release