下面是我现在的'解决'我的问题。我认为make应该会在另一个目录中没有找到依赖规则时自动执行此操作,但我无法弄清楚为什么我会这么想。你知道更好的方法吗?打电话在另一个目录
还有另一个目录../a/
它有一个Makefile来创建../a/generated.h
。
.PHONY: FORCE
FORCE:
my.c: ../a/generated.h
cp --preserve=timestamps $< [email protected]
../a/generated.h: FORCE
$(MAKE) -C $(dir [email protected]) $(notdir [email protected])
我有一个一般的形式,我可以使用,以避免重复每一个“外部”文件第二条规则,但正如我所说,我认为这是所有不必要的。化妆的
define REMOTE
$(1): FORCE
$$(MAKE) -C $$(dir [email protected]) $$(notdir [email protected])
endef
$(eval $(call REMOTE,../a/generated.h))
$(eval $(call REMOTE,../a/anotherGeneratedFile.h))
这看起来不是很好的设计。你有许多其他的目录和自己的makefile文件吗? – Beta 2013-02-11 20:19:48
这似乎是我误解了make会自动重建包含在'Makefile'中的任何文件。 – altendky 2013-02-12 14:14:09