1

あるカスタム コマンドの出力が別のカスタム コマンドの入力として使用されるプロジェクトがありますが、別のディレクトリにあります。たとえば、次のようになります。

ディレクトリ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.

したがって、ファイルレベルまたはターゲットレベルの依存関係はここでは機能しないようです。あるカスタム コマンドからの出力を、別のディレクトリにある別のカスタム コマンドへの入力にする方法はありますか?

4

1 に答える 1

0

test/CMakLists.txt追加してみることができます

add_custom_target(test DEPENDS test.yy)

そして追加する

add_dependencies(test libfoo)

あなたのトップレベルでCMakeLists.txt

免責事項:私はテストしていません。私は CMake の初心者です。それが機能するかどうか教えてください!

于 2011-05-20T23:08:04.893 に答える