我的CMake项目由一个由第三方控制的子模块构成。他们的测试已损坏,我想禁用它。
我以为这会是
add_subdirectory(thirdparty)
set_tests_properties(their_broken_test PROPERTIES DISABLED true)
但不是那么简单,CMake告诉我该测试不存在。
因此,我尝试退后一步,以获取CMake 认为存在的所有测试的列表。但这更加令人困惑:
project(cmaketest)
cmake_minimum_required(VERSION 3.5.0 FATAL_ERROR)
enable_testing()
add_test(ls /bin/ls)
get_property(LIST_OF_TESTS DIRECTORY . PROPERTY TESTS)
message(STATUS "Here are the tests: ${LIST_OF_TESTS}")
在CMake 3.10.2上,这显示 no 测试。但是在CMake 3.12.1上,它显示了ls
测试。
这是一个错误吗?还是有办法用较旧的CMake做到这一点? (3.10.2是Ubuntu Bionic仓库中的内容。)
答案 0 :(得分:0)
TESTS
属性是在CMake 3.12(release notes)中添加的:
添加了TESTS目录属性,以保存由add_test()命令定义的测试列表。
您可以执行以下操作来收集添加的测试名称列表。
if(${CMAKE_VERSION} VERSION_LESS "3.12.0")
function(add_test)
_add_test(${ARGN})
# There are two signatures to the add_test function to handle
if(ARGV0 STREQUAL "NAME")
set(TEST_NAME "${ARGV1}")
else()
set(TEST_NAME "${ARGV0}")
endif()
list(APPEND ALL_TESTS "${TEST_NAME}")
endfunction()
endif()
但是,您似乎无法在另一个目录中定义的测试上设置属性。