ここで何が間違っているのかわかりません。ソースファイルだけでなく、システムに含まれていないヘッダーファイルに対して、プロジェクトの依存関係を把握するために make を取得しようとしています。このテーマに関連するこのサイトから多くのリソースがあります。
例: Makefile ヘッダーの依存関係とMakefile、ヘッダーの依存関係
しかし、私がするとき
touch MyHeader.h
これが機能するかどうかを確認するためのテストとして、私の make プロセスは、このヘッダーを含むソース ファイルの再構築に失敗しました。だから、これが私のmakefileにあるものです(関連性があります)
CPP=g++
CPPFLAGS=-Iadditional/includes -MMD
CXXFLAGS=-std=c++0x -c
# not every source file in this directory needs to be included in this build
# this is because of shared code with Windows
SOURCESFILTER = File1.cpp File2.cpp
OBJ_DIR=obj
SOURCES = $(filter-out $(SOURCEFILTER),$(wildcard *.cpp))
OBJECTS = $(addprefix $(OBJ_DIR)/,$(SOURCES:.cpp=.o))
DEPENDENCIES = $(OBJECTS:.o=.d)
.PHONY: archive
archive : $(OBJECTS)
ar mylib.a obj/*.o
-include $(DEPENDENCIES)
$(OBJ_DIR)/%.o: $(SOURCES) $(DEPENDENCIES)
$(CPP) $(CPPFLAGS) $(CXXFLAGS) $< -o $@
上記のプロセスが実際に期待される *.d ファイルを生成することを確認しました。それらを正しく含めていると思います。ただし、前述のように、私が行うテストとして: touch MyHeader.h
これはソースと同じディレクトリにあり、make を再実行します。このヘッダーを含むソース ファイルはどれも再作成されません。私は何が欠けていますか?
アンディ