0

ソースの一部が生成されるプログラムがあります。メイクファイルの関連部分は次のようなものです。

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はファイルが作成される前に依存関係を評価しました. しかし、私はそれを正しく書く方法がわかりません。また、時々失敗する理由もわかりません。

サンプル コードの編集がより完全になりました。(もちろん、オリジナルにはもっと多くのファイルとオプションがあります)

4

1 に答える 1