テスト実行可能ターゲットの作成時にフラグを設定してEXCLUDE_FROM_ALL
、ターゲットをターゲットから除外しますall
。
add_executable (Test${TestID} EXCLUDE_FROM_ALL Test${TestID}.cpp)
テストの実行前にテスト ターゲットがビルドされていることを確認するのは、さらに注意が必要です。test
を使用して組み込みターゲットに依存関係を追加することはできませんadd_dependencies
。これは、ターゲットが、作成されたビルド システムにのみ存在する予約済みターゲット ( やその他のいくつかのターゲットなど)のtest
グループに属しているためです。all
clean
回避策として、 TEST_INCLUDE_FILESディレクトリ プロパティを使用して、テストが実行される前に必要なテスト実行可能ファイルのビルドをトリガーできます。BuildTestTargets.cmake.in
ソース ディレクトリに次の内容のファイルを作成します。
execute_process(COMMAND "@CMAKE_COMMAND@" --build . --target Test1)
execute_process(COMMAND "@CMAKE_COMMAND@" --build . --target Test2)
次に、次のコードを に追加しますCMakeLists.txt
。
configure_file("BuildTestTargets.cmake.in" "BuildTestTargets.cmake")
set_directory_properties(PROPERTIES TEST_INCLUDE_FILES
"${CMAKE_CURRENT_BINARY_DIR}/BuildTestTargets.cmake")
CTest はBuildTestTargets.cmake
、テストが実行される前の最初のステップとしてファイルを含めて実行します。