2011-11-10 24 views
4

cmakeでカスタムターゲットを定義しました。私は今、この標的がcmakeターゲットtestが実行されたときにのみ構築されるようにしたいと思っています。どうすればこれを実現できますか?cmakeターゲットに依存関係を追加する方法

私は目標に先立って呼び出されるべきターゲットmake coverageを持っているか、または実行する前にmake testを呼ぶことができます。

この動作をcmakeでどのように定義できますか?

私のコードは期待通りに機能しませんでした。私はカバレッジを作ることが前もって呼ばれなければならないということに依存しています。

ADD_CUSTOM_TARGET(
     coverage COMMAND /bin/bash ${LIBPIPE_BINARY_DIR}/cmake/scripts/coverage.sh 
     DEPENDS test 
    ) 
+0

テストとは何ですか? custom_commandまたはcustom_target? – arrowd

+0

テストはcustom_targetです – tune2fs

+0

Strange。カスタムターゲットは常に古くなっているので、カバレッジを実行するとテストが最初に実行されます。 – arrowd

答えて

3

CMake FAQは、カスタムターゲットを定義add_custom_command/add_custom_targetコマンドは、DEPENDSパラメータを持っていると述べています。

+0

私はこれを見ましたが、残念ながらそれは私のためには機能しませんでした。上記で試したコードをいくつか追加しました。 – tune2fs

+0

ここでは、あなたに役立つかもしれない同様のトピックhttp://stackoverflow.com/questions/733475/cmake-ctest-make-test-doesnt-build-tests –

6

"DEPENDSテスト"句を追加することはできません。 CMake内の事前定義/組み込みターゲット(all、install、package、test、clean)はCMakeLists.txtファイルの実際のターゲットとして利用できません。したがって、組み込みターゲットへの依存関係を表現することはできません。

CMakeのバグトラッカーにはこの機能がありますが、まだ実装されていません。 http://public.kitware.com/Bug/view.php?id=8438

ただし、カスタムターゲットのコマンドを変更して、 "make test"を呼び出してからカバレッジコマンドを実行することもできます。

関連する問題