是否有任何GNU Make特殊变量用于了解哪个目标是用户在命令行调用中发送的目标?为了达到类似的目的(这只是一个例子):
// makefile
ifeq ($(USER_TARGET),"plain")
CXXFLAGS += -O0
else
CXXFLAGS += -O3
endif
plain:
// do something using CXXFLAGS
all:
// other rule using CXXFLAGS
重要的是,USER_TARGET
变量(可以是一个特殊的GNU Make变量,或者一个自定义变量,其值是由一些返回用户目标的特殊GNU Make函数设置的),包含由呼叫中的用户如:
$ make plain
而不是依赖关系树的任何步骤中的值。换句话说,USER_TARGET
在构建依赖链期间不得更改,因为如果我没有错,USER_TARGET
的值将在第一次使用时进行评估,而不是可能发生在文档的任何一点,因此,我想确保构建链的当前步骤不会改变USER_TARGET
的值。
我不知道我是否已经足够清楚或是否过度解释。
如果在GNU Make中没有内置机制,那么欢迎任何$(shell command)
技巧。