ソースの一部が生成されるプログラムがあります。メイクファイルの関連部分は次のようなものです。
OUTPUT_FILE = libEngine.so
CONF_FILES = foo.tgp bar.tgp
GENERATED = Engine.cfg
SRCS = main.cpp foo.cpp bar.cpp
OBJ_FILES = $(SRCS:%.cpp=$(OBJDIR)/%.o)
all: $(OUTPUT_FILE)
$(OUTPUT_FILE): $(GENERATED) $(OBJ_FILES)
<link command>
$(GENERATED): $(CONF_FILES)
generate -p Engine $(CONF_FILES)
$(OBJDIR)/%.o:%.cpp
<compile command>
「生成」コマンドは、Engine.cfg (テキスト ファイル)、foo.cpp、および bar.cpp を作成します。
一部のプラットフォームで実行すると、生成されていないものを生成してコンパイルした後、gmake が停止し、生成されたソースからオブジェクトを作成するためのルールがないことを示します。
私は問題が何であるかを知っていると思います.gmakeはファイルが作成される前に依存関係を評価しました. しかし、私はそれを正しく書く方法がわかりません。また、時々失敗する理由もわかりません。
サンプル コードの編集がより完全になりました。(もちろん、オリジナルにはもっと多くのファイルとオプションがあります)