获取CMake中的测试列表

时间:2019-02-19 16:24:24

标签: cmake

我的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仓库中的内容。)

1 个答案:

答案 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()

但是,您似乎无法在另一个目录中定义的测试上设置属性。