【发布时间】:2020-12-10 00:36:41
【问题描述】:
我有一个应用程序,我需要在其中创建目标组,其中给定目标可能作为依赖项出现在多个组中。如果包含一个共同目标的多个组在同一个调用中构建,我希望每次都重新构建共同的先决条件,而不是只为所有组重新构建一次。
例如:
# Makefile.test_group_overrides
GROUPS=group1 group2
all: $(GROUPS)
one:
@echo $@ is $(NUM)
two:
@echo $@ is $(NUM)
three:
@echo $@ is $(NUM)
group1: NUM=2
group1: one two
group2: NUM=3
group2: two three
如果我执行:
$ make -f Makefile.test_group_overrides group1
one is 2
two is 2
$ make -f Makefile.test_group_overrides group2
two is 3
three is 3
这是我对独立执行的每个组目标的期望。
但是,如果我尝试在同一个调用中构建 两个 组,则如下:
$ make -f Makefile.test_group_overrides all
one is 2
two is 2
three is 3
Make 似乎注册了它已经为 group1 设置了目标“two”,因此不会将“two”重建为 group2 的依赖项。
我尝试了使用 .PHONY/FORCE 目标组合和 -B 开关强制重建“两个”的变体,但没有任何运气。
有解决办法吗?如果可能的话,我宁愿不创建临时文件来解决。
谢谢!!
【问题讨论】: