3

I would like to run parallel jobs when running ctest. I tried setting

set(CTEST_PARALLEL_LEVEL 8)

in

CTestCustom.cmake.in

but this didn't change the command line options after I re-generated my build files.

I am on windows, using visual studio.

4

1 回答 1

7

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

我看到以下可能的方法:

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

  2. 用类似的东西创建自己的目标

    add_custom_target(
        RUN_TESTS_J8 
            COMMAND ${CMAKE_CTEST_COMMAND} -j 8 -C $<CONFIGURATION> --force-new-ctest-process 
            WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
    )
    

    并且可以将它与其他预定义的目标组合在一起

    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}"
    )
    

    然后它将是 - 作为正常构建的一部分 - 本身并行执行。

更多参考资料

于 2015-11-27T21:26:20.840 回答