我正在尝试创建一个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
。
我在这里做错了还是这种缩进行为?
答案 0 :(得分:1)
add_test (... CONFIGURATIONS ...)
完全是为了以后使用ctest -C ...
运行特定配置的测试。
是的,这是有意的。原因是它以相同的方式支持单配置和多配置构建环境。
如果您只想支持单一配置环境,请执行以下操作:
if (CMAKE_BUILD_TYPE MATCHES "Release")
add_test (
NAME test
COMMAND cowsay
)
endif()