通过环境变量设置 Makefile (GNU Make) 的默认目标

Set the default target(s) of a Makefile (GNU Make) via Environment Variable

我想将 Makefile 的默认目标设置为环境变量的 space 分隔值。

为了使此解决方案正常工作,我必须可以设置一个环境变量,然后设置 运行 make 并设置目标(或可选 space-delimited targets),包含在环境变量中,就像它们作为目标传递一样使用。

DEFAULT_TARGETS="target target2" make
# ... should produce the same result as ...
make target1 target2

感谢您的帮助!

您可以通过在您的 makefile 中添加如下内容来实现:

ifneq ($(DEFAULT_TARGETS),)
__default_targets: $(DEFAULT_TARGETS)
.DEFAULT_GOAL = __default_targets
endif

在@Andreas 的带领下,我着手解决了这个问题...

.PHONY: DEFAULT_TARGET
DEFAULT_TARGETS ?= intro
DEFAULT_TARGET: $(DEFAULT_TARGETS)

这使用“第一个目标作为默认值”范例,然后扩展 DEFAULT_TARGETS env-var 的内容以添加必要条件。它还有一个优点,如果未设置 DEFAULT_TARGETS 环境变量,makefile 将使用回退值,在本例中为 intro.

在 shell 中看起来像 DEFAULT_TARGETS="target target2" make