我正在开发一个使用嵌套 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
在这种情况下,我希望目标仅生成 $(BUILD_DIR)/version.h,跳过运行包含在所有子目录中。但是,我还是想使用 subdirs.mk,因为它提供了其他有用的功能(前面提到的test
和install
目标)。
有没有办法清除includes
目标的依赖关系?