首页 文章

如何从Make目标中删除依赖项定义?

提问于
浏览
1

我正在开发一个使用嵌套Makefile构建的大型项目(~3x10 ^ 6行代码) . 我有一个文件( subdirs.mk ),它为所有子目录(可能并行)添加了一些便利规则 . 它包括以下规则:

$(SUBDIRS_INCLUDES):
$(MAKE) -C $(patsubst %-includes,%,$@) includes

SUBDIRS_INCLUDES := $(patsubst %,%-includes,$(SUBDIRS))

includes: $(SUBDIRS_INCLUDES)

它还为 installcleantest 等提供了类似的规则 .

在我的一个上层Makefile中,我有这个代码:

SUBDIRS = dir1 dir2 dir3
include $(BUILD_TOOLS)/subdirs.mk

includes: $(BUILD_DIR)/version.h

我希望在这种情况下 includes 目标只能生成$(BUILD_DIR)/version.h,跳过所有子目录中的运行包含 . 但是,我仍然想使用subdirs.mk,因为它提供了其他有用的功能(前面提到的 testinstall 目标) .

Is there a way to clear the dependencies from the includes target?

2 回答

  • 0

    除了 includes 之外,为两个目标之一使用不同的名称 . Make没有'subtracting'或'removing'依赖关系的概念 .

  • 3

    来自Silicon Graphics(SGI)的Unix变体Irix通过提供一个变量相当于您的subdirs.mk文件来解决这个问题,该变量在所有包含的规则之前开头 . 然后,在包含subdirs.mk之前,在所有子makefile中设置此前缀 .

    虽然吸收很多,但这些文件:commondefscommonrules提供了您正在寻找的解决方案 .

相关问题