ここでステージングされた自動依存関係管理トリックを使用して *.[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 ファイルを生成する方法を見つけ出し、私のルールは使用しません。
スキップされた問題はありますか?