我正在开发一个使用嵌套Makefile构建的大型项目(~3x10 ^ 6行代码)。我有一个文件(subdirs.mk
),它为所有子目录(可能并行)添加了一些便利规则。它包括以下规则:
$(SUBDIRS_INCLUDES):
$(MAKE) -C $(patsubst %-includes,%,$@) includes
SUBDIRS_INCLUDES := $(patsubst %,%-includes,$(SUBDIRS))
includes: $(SUBDIRS_INCLUDES)
它还为install
,clean
,test
等提供了类似的规则。
在我的一个上层Makefile中,我有这段代码:
SUBDIRS = dir1 dir2 dir3
include $(BUILD_TOOLS)/subdirs.mk
includes: $(BUILD_DIR)/version.h
我希望在这种情况下includes
目标仅 make $(BUILD_DIR)/version.h,跳过所有子目录中的运行包含。但是,我仍然想使用subdirs.mk,因为它提供了其他有用的功能(前面提到的test
和install
目标)。
有没有办法清除includes
目标的依赖关系?
答案 0 :(得分:3)
除includes
之外,为两个目标之一使用其他名称。 Make没有“减去”或“删除”依赖关系的概念。
答案 1 :(得分:0)
虽然吸收很多,但这些文件:commondefs和commonrules提供了您正在寻找的解决方案。