次の架空の Makefile があります。
all: SOURCE = $(wildcard src/*.cpp)
unity: SOURCE = $(wildcard unity/*.cpp)
OBJECTS = $(SOURCE:.cpp=.o)
all: prog
unity: prog
prog: $(OBJECTS)
$(CXX) $(OBJECTS) -o prog
初期ターゲットに基づいて、さまざまなソース ファイル/オブジェクトでコンパイルする必要があります。上記のコンパイラコマンドは適切なファイル名で問題なく呼び出されるため、ターゲット本体よりも依存関係で変数展開がはるかに早く発生するように見えますが、prog 依存関係の $OBJECTS はまだ空であるため、オブジェクトはありません構築されました。
unity フォルダーには、unity ビルドを行うために含まれる他のすべてのソース ファイルと結合されたソース ファイルが含まれています。この Unity ファイルは makefile によって生成されますが、これは省略されており、実際には複数の Unity オブジェクト ファイルである可能性があります。
私のデザインは失われた原因ですか?これを達成するには、再帰的なmakeに頼る必要がありますか?