あるカスタム コマンドの出力が別のカスタム コマンドの入力として使用されるプロジェクトがありますが、別のディレクトリにあります。たとえば、次のようになります。
ディレクトリlib/CMakeLists.txt
には以下が含まれます:
add_custom_command(
OUTPUT libfoo.xx
COMMAND <command to build libfoo.xx>
)
add_custom_target(libfoo DEPENDS libfoo.xx)
ディレクトリtest/CMakeLists.txt
には以下が含まれます:
add_custom_command(OUTPUT test.yy
COMMAND <command to build test.yy>
DEPENDS "${PROJECT_BINARY_DIR}/lib/libfoo.xx"
)
したがって、libfoo が test.yy の前にビルドされるようにする必要があります。ドキュメントによると、 add_custom_command() の DEPENDS 句はファイルレベルの依存関係しか持てません。それを試して、何が起こるか見てみましょう:
No rule to make target 'lib/libfoo.xx', needed by 'test/test.yy'. Stop.
一方、 と言ってターゲット レベルの依存関係を作成しようとするとDEPENDS libfoo
、エラーは次のように変わります。
No rule to make target 'libfoo', needed by 'test/test.yy'. Stop.
したがって、ファイルレベルまたはターゲットレベルの依存関係はここでは機能しないようです。あるカスタム コマンドからの出力を、別のディレクトリにある別のカスタム コマンドへの入力にする方法はありますか?