我想要检测Makefile命令行中是否设置了“-s”。是否有一个变量可以捕捉到我可以测试的选项?如何访问Makefile中的make选项
例如,我想要做的事,如:
的Makefile:
if ($(MAKE_OPTIONS), -s)
#do something
endif
调用:
make $(MAKEFILE_OPTIONS) -C some_dir
我想要检测Makefile命令行中是否设置了“-s”。是否有一个变量可以捕捉到我可以测试的选项?如何访问Makefile中的make选项
例如,我想要做的事,如:
的Makefile:
if ($(MAKE_OPTIONS), -s)
#do something
endif
调用:
make $(MAKEFILE_OPTIONS) -C some_dir
你要找的变量是MAKEFLAGS
。
ifeq ($(filter s, $(MAKEFLAGS)),s)
# do something
endif
不,filter
不是。使用findstring
:
ifneq ($(findstring s, $(MAKEFLAGS)),)
...
endif
或
$(if $(findstring s, $(MAKEFLAGS)),...)
可惜这比较难找到一个真正的便携式(跨GNU的不同版本做)的方式来做到这一点。如果您在名称中设置了带“s”的标志(例如,--warn-undefined-variables
),Mark的解决方案会给出误报。
在GNU使4.0及以上,MAKEFLAGS的布局是明确的,你可以使用这个:
$(findstring s,$(firstword -$(MAKEFLAGS))
保持强劲,可靠地告诉我们,如果-s
给出。但是,在GNU make 4.0以前的版本中,这种方法无法可靠地工作。您可以使用此:
$(findstring s,$(firstword -$(MAKEFLAGS)))$(filter -s,$(MAKEFLAGS))
这扩展成空字符串,如果-s
未给,或一个非空字符串,如果它是。我相信这将适用于所有版本的GNU make。
哦,上帝,我忘了你可以有那么长的选择。谢谢,先生,我可以有另一个! –
我没有注意到4.0发布。我上过什么星球?谢谢保罗! –