他のすべての C++ ファイルが依存する生成ファイルを含む C++ プロジェクトがあります。他のコンパイルが始まる前に、そのファイルを強制的に生成してコンパイルしようとしています。通常、そのファイルを最初にターゲットに配置するのと同じくらい簡単ですall:
が、複雑なのは、私の Makefile もビルド システムによって生成され、Makefile にフラグメントを追加することしかできず、一般的に編集することはできません。
それで、依存関係などを介して、生成されたファイルターゲットを最初に強制的に実行する方法はありますか? 私はこのようなものを使用することを考えました:
cpp_files := $(wildcard src/*.cpp)
$(cpp_files): generated_file.cpp
generated_file.cpp:
# generate the file here
しかし、うまくいかないようです。参考までに、私のソース ディレクトリ構造は次のようになっているため、cpp ファイルを再帰的に収集する必要があります。
src/
|---file1.cpp
|---file2.cpp
|---subdir1/
|---file3.cpp
gen/
|---generated_file.cpp