ネストされた 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
ターゲットから依存関係をクリアする方法はありますか?