Makefile 中对目标的可选依赖

Optional depencency on target in Makefile

是否可以在 Makefile (GNU Make) 中创建对目标的可选依赖项?

help:
    @echo Usage:

clean:
    @echo Cleaning...

build: clean?
    @echo Building...

预期输出:

$ make
Usage:

$ make clean
Cleaning...

$ make build
Building...

$ make build clean
Cleaning...
Building...

$ make clean build
Cleaning...
Building...

目标集是固定的并且不能扩展,即

rebuild: clean build

.PHONY: rebuild

不可接受。

是的,你可以这样做:

build: $(filter clean,$(MAKECMDGOALS))
        @echo Building...

参见:https://www.gnu.org/software/make/manual/html_node/Goals.htmlhttps://www.gnu.org/software/make/manual/html_node/Text-Functions.html#index-filter