プロジェクトが正常にビルドされるたびにテストを開始します。いくつかのテストが壊れてしまった場合、私のビルドも壊れてしまいます。デフォルトでは、ctest
コマンドを実行してテストを手動で実行する必要があります。 CTestは実際にプロジェクトをビルドできますが、私はソースを構築するためにmake
を呼び出すIDEを使用します。 make
はテストを実行しません。cmakeでプロジェクトをビルドした後でctestを実行するには
このコマンドをルートCMakeLists.txtファイルに追加しますが、動作しません。
add_custom_command(OUTPUT tests.txt
POST_BUILD
COMMAND ctest --output-on-failure)
CMakeのは、すべてのエラーを返さないとすべてがうまく構築しますが、私のカスタムコマンドが起動されますされません。 CMakeで成功裏にビルドするたびに、どうすればよいのですか?
更新:
私の最終的な解決策は、この関数である:
macro(add_unit_test target target_test)
set(UNIT_TEST_TARGETS ${UNIT_TEST_TARGETS} ${target_test} PARENT_SCOPE)
add_test(target ${CMAKE_CURRENT_BINARY_DIR}/target_test)
endmacro(add_unit_test)
それはadd_test
を呼び出し、リスト内のテスト対象を記憶しています。この関数によって追加されたプロジェクトのすべてのテスト。ルートCMakeLists.txtで、私はこのコードを持っている:
add_custom_target(all_tests ALL
DEPENDS ${UNIT_TEST_TARGETS}
)
add_custom_command(TARGET all_tests
COMMENT "Run tests"
POST_BUILD COMMAND ctest ARGS --output-on-failure
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
これは、プロジェクト内のすべてのユニットテストに依存するカスタムターゲットを作成します。カスタムコマンドは、all_tests
ターゲットが構築された後に実行されます。
おかげ - あなたのマクロで、add_test' 'で、私はあなたが'代わりに答えを 'target_test' – experquisite