【发布时间】:2013-08-08 23:15:56
【问题描述】:
我有一个包含四个目标的生成文件。其中两个目标可以复制,因此可能有许多目标需要作为先决条件运行(它们是double-colon targets)。其中两个目标是match-anything rules。不幸的是,它根本不像我期望的那样工作。我从这个开始:
.PHONY:
build_%: pre_build post_build _internal_%
@echo "4. $@: $^"
.PHONY: pre_build
pre_build::
@echo "1. $@: $^"
.PHONY: _internal_%
_internal_%:
@echo "2. $@: $^"
.PHONY: post_build
post_build::
@echo "3. $@: $^"
这给了我这个输出:
make build_foo
1. pre_build:
3. post_build:
2. _internal_foo:
4. build_foo: pre_build _internal_foo post_build
如果我对先决条件很明确,像这样:
.PHONY:
build_%: pre_build post_build _internal_%
@echo "4. $@: $^"
.PHONY: pre_build
pre_build::
@echo "1. $@: $^"
.PHONY: _internal_%
_internal_%: pre_build
@echo "2. $@: $^"
.PHONY: post_build
post_build:: _internal_%
@echo "3. $@: $^"
相反,我得到了这个:
make build_foo
1. pre_build:
make: *** No rule to make target `pre_build'. Stop.
我需要做什么才能使依赖项像这样工作?我正在使用 GNU Make 3.81。
【问题讨论】: