通过环境变量设置 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
我想将 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