如何将 -j 选项添加到我的 ctest cmake 文件中?

How do I add the -j option to my ctest cmake file?

我想在 运行 宁 ctest 时 运行 并行作业。我试过设置

set(CTEST_PARALLEL_LEVEL 8)

CTestCustom.cmake.in

但这并没有在我重新生成构建文件后更改命令行选项。

我在 windows,使用 visual studio。

您无法更改在 Visual Studio 上构建 RUN_TESTS 时使用的命令行。代码中没有选项(参见 cmGlobalGenerator::CreateDefaultGlobalTargets())。

我看到以下可能的方法:

  1. 在您的 Windows 中全局设置 CTEST_PARALLEL_LEVEL 环境变量(因此它只是您机器 CMake/CTest 配置的一部分)或为您的 Visual Studio.

    • Can I set an environment variable for an application using a shortcut in Windows?
  2. 创建您自己的目标,例如

    add_custom_target(
        RUN_TESTS_J8 
            COMMAND ${CMAKE_CTEST_COMMAND} -j 8 -C $<CONFIGURATION> --force-new-ctest-process 
            WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
    )
    
    • CMake: setting an environmental variable for ctest (or otherwise getting failed test output from ctest/make test automatically)

    并可能将其与其他预定义目标组合在一起

    set_property(GLOBAL PROPERTY USE_FOLDERS ON)
    set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMake")
    set_property(TARGET RUN_TESTS_J8 PROPERTY FOLDER "CMake")
    
  3. 结合构建和 运行 作为测试本身的 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}"
    )
    

    然后它将作为正常构建的一部分 - 单独并行执行。

    • How to run ctest after building my project with cmake

更多参考文献

  • Using cmake how do I get verbose output from ctest?