一个众所周知的问题是,执行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”
答案 0 :(得分:1)
如果你看一下
的输出cmake --help-command add_custom_target
它提到了ALL参数,“如果指定了ALL选项,则表示应该将此目标添加到默认构建目标,以便每次都运行它”。您需要将此参数添加到自定义目标,并且Nightly目标运行make以构建默认构建目标中的所有内容。所以以下应该这样做,
add_custom_target(buildtests)
您的另一个选择是编写一个自定义CTest脚本,它可以为您的项目构建和测试提供更精细的控制。
答案 1 :(得分: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