ここでステージングされた自動依存関係管理トリックを使用して *.[cpp,h] ファイルのフラット レイアウトを作成したい: http://locklessinc.com/articles/makefile_tricks/
私の仕事は:
.PHONY: すべてクリーン CXX ?= g++ デバッグ? = "1" ifeq ($(DEBUG), "1") CFLAGS+=-g 終了 BODIES := ExecuteStart GraphNode IdNodeMap IdValuePairCollection IScenarioReader XMLScenarioReader INodeExecute SRCS := $(addsuffix .cpp, $(BODIES)) オブジェクト := $(addsuffix .o, $(BODIES)) DEPS := $(addsuffix .d, $(SRCS)) 従属なし = %.o %.a %.d %.h expand = $($(var)) $(var) $(var).d depend_test = $(if $(filter $(dependless),$(var)),$(var),$(expand)) 依存 = $(ソート $(foreach var,$(1),$(depend_test))) デフォルト: すべて $(ワイルドカード *.d) を含める & = $(除外 %.h %.d,$^) すべて: $(オブジェクト) %.cpp.d: %.cpp @echo $@ の $@ を作成しています' 掃除: rm $(オブジェクト) $(DEPS)
問題は、ルール %.o: $(calldepend, %.cpp) が機能しないことです。そのため、--warn-undefined-variables を作成すると、%.cpp について警告されます。その結果、make は *.o ファイルを生成する方法を見つけ出し、私のルールは使用しません。
スキップされた問題はありますか?