ネストされた Makefile を使用してビルドする大規模なプロジェクト (〜 3x10^6 行のコード) に取り組んでいます。すべてのサブディレクトリを (おそらく並行して) 操作するためのいくつかの便利なルールを追加するファイル ( subdirs.mk) があります。次のルールが含まれます。
$(SUBDIRS_INCLUDES):
$(MAKE) -C $(patsubst %-includes,%,$@) includes
SUBDIRS_INCLUDES := $(patsubst %,%-includes,$(SUBDIRS))
includes: $(SUBDIRS_INCLUDES)
install、clean、testなどについても同様のルールを提供します。
上位レベルの Makefile の 1 つに、次のコードがあります。
SUBDIRS = dir1 dir2 dir3
include $(BUILD_TOOLS)/subdirs.mk
includes: $(BUILD_DIR)/version.h
この場合、includesターゲットは$(BUILD_DIR)/version.hのみを作成し、すべてのサブディレクトリでのインクルードの実行をスキップします。testただし、他の便利な機能 (前述の機能とinstallターゲット機能) を提供するので、subdirs.mk を引き続き使用したいと考えています。
includesターゲットから依存関係をクリアする方法はありますか?