【问题标题】:How do I add the -j option to my ctest cmake file?如何将 -j 选项添加到我的 ctest cmake 文件中?
【发布时间】:2016-03-01 18:10:38
【问题描述】:

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

set(CTEST_PARALLEL_LEVEL 8)

CTestCustom.cmake.in

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

我在 Windows 上,使用 Visual Studio。

【问题讨论】:

  • CTEST_PARALLEL_LEVEL 应作为环境变量提供(请参阅cmCTest.cxx)。你试过set(ENV{CTEST_PARALLEL_LEVEL} 8)吗?
  • 谢谢。我试过这个,但似乎没有帮助。我应该在我的文件中哪里设置它?在 VIsualStudio 中,RUN_TESTS 创建一个运行 ctest exe 的构建后步骤。我希望在我的 cmake 文件中添加一行,将 -j 8 命令行参数添加到此构建后步骤

标签: cmake ctest


【解决方案1】:

您无法更改在 Visual Studio 上构建 RUN_TESTS 时使用的命令行。代码中没有选项(参见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}"
    )
    

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

更多参考资料

【讨论】:

  • 哇,感谢您提供所有这些信息。我决定从您的建议中选择最简单的方法 - 设置一个 windows env 变量。这很好用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 2016-03-04
  • 1970-01-01
  • 2018-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多