2010-07-20 121 views
2

这是一个众所周知的问题,执行make“test”不会构建测试,如讨论的here。正如所建议的,这个问题可以通过人造目标“检查”部分解决。当我打电话给“夜间制作”时,我想知道如何强制进行测试。CMake和CTest:如何让目标“Nightly”实际构建测试

什么我迄今所做的:

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) 

现在“做检查”构建一个运行测试,而是“使夜间”

  • 构建测试
  • 更新回购到CTEST_NIGHTLY_START_TIME
  • 构建所有其他目标
  • 运行(现已过时)测试

回答

1

如果你看的输出,

cmake --help-command add_custom_target

它提到了所有的说法,“如果指定了ALL选项表示,这个目标应该被添加到默认的构建目标,使其将每次运行“。您需要将此参数添加到自定义目标,Nightly目标运行一个make来构建默认构建目标中的所有内容。所以下面应该这样做,

add_custom_target(buildtests)

您的其他选择是编写自定义脚本CTEST,它给你项目的构建和测试的更精细的细粒度控制。

+0

您的权利,它实际上是我自己的错误: add_subdirectory(test EXCLUDE_FROM_ALL) 解决的办法是将其改为 如果(LEAVE_TEST_IN_ALL_TARGET) add_subdirectory(测试) 否则() add_subdirectory(测试EXCLUDE_FROM_ALL) ENDIF() ,然后调用 cmake的$ {SRC_DIR} -DLEAVE_TEST_IN_ALL_TARGET = ON每晚做 – bgp2000 2010-08-18 17:35:52

1

你说得对,它实际上是我自己的错致电:

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 
相关问题