我正在構建一個使用嵌套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