代码之家  ›  专栏  ›  技术社区  ›  bgp2000

CMAKE和CTEST:如何使目标“夜间”实际构建测试

  •  2
  • bgp2000  · 技术社区  · 15 年前

    执行make“test”并不能按照讨论的方式构建测试,这是一个众所周知的问题。 here . 如建议,人工目标“检查”可以部分解决问题。我想知道当我称之为“每晚都做”时,如何强制构建测试。

    到目前为止我所做的:

      add_custom_target(buildtests)
      add_custom_target(check COMMAND "ctest")
      add_dependencies(check buildtests)
      add_dependencies(Nightly buildtests)
    
      add_dependencies(buildtests Test1)
      ...
      add_dependencies(buildtests TestN)
    

    现在“make check”构建一个运行测试,但是“make nightly”

    • 构建测试
    • 更新对CTEST夜间启动时间的报告
    • 生成所有其他目标
    • 运行(现在过时的)测试
    2 回复  |  直到 15 年前
        1
  •  1
  •   Marcus D. Hanwell    15 年前

    如果你看的是

    cmake --help-command add_custom_target

    它提到了all参数,“如果指定了all选项,则表示应将此目标添加到默认生成目标中,以便每次都运行它”。您需要将此参数添加到自定义目标中,并且夜间目标运行make来构建默认构建目标中的所有内容。所以下面应该这样做,

    add_custom_target(buildtests)

    您的另一个选择是编写一个定制的CTEST脚本,它使您能够更细粒度地控制项目的构建和测试。

        2
  •  1
  •   bgp2000    15 年前

    你说得对,打电话来是我自己的错:

    add_subdirectory(test EXCLUDE_FROM_ALL)
    

    解决办法是把它改成

    if(LEAVE_TEST_IN_ALL_TARGET) 
      add_subdirectory(test) 
    else() 
      add_subdirectory(test EXCLUDE_FROM_ALL) 
    endif() 
    

    然后打电话

    cmake ${SRC_DIR} -DLEAVE_TEST_IN_ALL_TARGET=ON make Nightly
    
    推荐文章