我正在构建一个使用嵌套Makefiles构建的大型项目(〜3x10^6行代码)。我有一个文件(subdirs.mk
),它为所有子目录(可能并行)添加了一些便利规则。它包括以下规则:如何从Make目标中删除依赖关系定义?
$(SUBDIRS_INCLUDES):
$(MAKE) -C $(patsubst %-includes,%,[email protected]) 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
目标的依赖关系?
有道理。当然,我确定为这些目标使用面向用户的名称的基本原理是,使用它们的文件不必定义SUBDIRS以外的任何其他文件。不过,我想我可能会这样做。 – dbn