ctest不会调用构建类型特定的测试

时间:2017-09-27 16:42:17

标签: cmake automated-tests ctest

我正在尝试创建一个CMake项目,我希望根据构建类型执行测试。 例如。如果我进行性能构建,我想运行性能测试等。

我发现add_test为此提供了CONFIGURATIONS参数。但是,如果我在那里提供构建类型,ctest找不到任何测试。

这是一种简约的CMakeLists.txt再现行为。

project (test NONE)
include (CTest)

add_test (NAME test
  CONFIGURATIONS Release
  COMMAND cowsay)

在shell中:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release .. 
cmake --build .
ctest

输出:

Running tests... 
Test project /home/phil/cmaketest/build 
No tests were found!!!

如果我跑

ctest -C Release

我得到了所需的行为,即测试已执行,但我宁愿不必手动输入-C Release

我在这里做错了还是这种缩进行为?

1 个答案:

答案 0 :(得分:1)

add_test (... CONFIGURATIONS ...)完全是为了以后使用ctest -C ...运行特定配置的测试。

是的,这是有意的。原因是它以相同的方式支持单配置和多配置构建环境。

如果您只想支持单一配置环境,请执行以下操作:

if (CMAKE_BUILD_TYPE MATCHES "Release")
    add_test (
        NAME test
        COMMAND cowsay
    ) 
endif()