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

Jac*_*cko 2 cmake ctest

我想在运行时运行并行作业ctest.我尝试过设置

set(CTEST_PARALLEL_LEVEL 8)
Run Code Online (Sandbox Code Playgroud)

CTestCustom.cmake.in
Run Code Online (Sandbox Code Playgroud)

但是在重新生成构建文件后,这并没有改变命令行选项.

我在窗户上,使用视觉工作室.

Flo*_*ian 7

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

我看到以下可能的方法:

  1. CTEST_PARALLEL_LEVEL在Windows中全局设置环境变量(因此它只是您加工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}"
    )
    
    Run Code Online (Sandbox Code Playgroud)

    并且mayby将它与其他预定目标组合在一起

    set_property(GLOBAL PROPERTY USE_FOLDERS ON)
    set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMake")
    set_property(TARGET RUN_TESTS_J8 PROPERTY FOLDER "CMake")
    
    Run Code Online (Sandbox Code Playgroud)
  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}"
    )
    
    Run Code Online (Sandbox Code Playgroud)

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

更多参考资料