多くのサブプロジェクトを含む CMake プロジェクトがあります。それらはそれぞれ、私が提供する関数を使用して、(add_custom_command を呼び出して) 特定の情報を含む小さなテキスト ファイルを生成できます。最後のステップで、これらすべてのファイルを 1 つの大きなテキスト ファイルに結合したいと思います。
作成されたファイルを (すべて 1 か所で) 検索してマージするカスタム コマンドを作成しました。
問題は、提供されるファイルの数が実際にはわからないのに、この最終ステップをサブプロジェクトで行われるすべての小さなステップに依存させたいということです。
私の最終的なコマンドは次のようになります。
add_custom_command(OUTPUT combination.txt
COMMAND create combination.txt from all files from /path/)
私の create-small-text-file-for-each-subproject コマンドは次のようになります。
add_custom_command(OUTPUT /path/${sub_project_name}.txt
COMMAND create /path/${sub_project_name}.txt)
そして、これらの小さなファイルを作成するときに、「combination.txt」を /path/${sub_project_name}.txt に依存させるようなことをしたいと思います
だから私はできればいいのに:
add_dependency(combination.txt /path/${sub_project_name}.txt)
ただし、これはターゲットに対してのみ機能します。
また、OBJECT_DEPENDS で set_source_files_properties を使用しようとしましたが、動作しないようです (おそらく、add_target の cpp ファイルで使用するつもりですか?)
私が見る最後の方法は、キャッシュ変数を使用して、これらの小さなファイルパスをすべて蓄積し、次のように使用することです。
add_custom_command(OUTPUT combination.txt
COMMAND create combination.txt from all files from /path/
DEPENDS ${all_small_files_list})
しかし、これは私がやりたい最後のことです。