0

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

スキップされた問題はありますか?

4

1 に答える 1