我希望在运行ctest
时运行并行作业。我试着设置
set(CTEST_PARALLEL_LEVEL 8)
在中
CTestCustom.cmake.in
但在我重新生成构建文件后,这并没有改变命令行选项。
我在windows上,使用visualstudio。
您不能更改在Visual Studio上构建RUN_TESTS
时使用的命令行。代码中没有选项(请参阅cmGlobalGenerator::CreateDefaultGlobalTargets()
)。
我看到以下可能的方法:
-
在Windows中全局设置
CTEST_PARALLEL_LEVEL
环境变量(因此它只是计算机CMake/CTest配置的一部分),或为Visual Studio添加启动脚本。- 我可以在Windows中使用快捷方式为应用程序设置环境变量吗
-
用之类的东西创建你自己的目标
add_custom_target( RUN_TESTS_J8 COMMAND ${CMAKE_CTEST_COMMAND} -j 8 -C $<CONFIGURATION> --force-new-ctest-process WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" )
- CMake:为ctest设置环境变量(或自动从ctest/make-test获取失败的测试输出)
并可能将其与其他预定义目标组合在一起
set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMake") set_property(TARGET RUN_TESTS_J8 PROPERTY FOLDER "CMake")
-
组合build&作为测试本身的
POST_BUILD
步骤运行add_custom_command( TARGET MyTest POST_BUILD COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> -R "^MyTest$" --output-on-failures WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" )
然后,作为正常构建的一部分,它本身将并行执行。
- CMake中的全局自定义目标
- 如何在用cmake构建我的项目后运行ctest
更多参考
- 使用cmake如何从ctest获得详细输出