Ing*_*ngo 6 debian cmake ctest
通过CMake,我尝试使用CTest执行简单的测试。我将此配置全部放在一个目录中 (${CMAKE_SOURCE_DIR}):
~$ cat hello.cpp
#include <iostream>
int main() {
std::cout << "hello world\n";
return(0);
}
~$ cat CMakeLists.txt
cmake_minimum_required(VERSION 3.18)
project(TEST_CTEST)
enable_testing()
add_executable(test_ctest hello.cpp)
add_test(my_test ./build/test_ctest)
Run Code Online (Sandbox Code Playgroud)
然后我执行:
~$ rm -rf Testing/ build/
~$ cmake -S . -B build
~$ cmake --build build
~$ ./build/test_ctest
hello world
~$ ctest
*********************************
No test configuration file found!
*********************************
Usage
ctest [options]
Run Code Online (Sandbox Code Playgroud)
我在其他问答中发现的唯一提示是放入enable_testing()root 中CMakeLists.txt。我觉得我错过了一件小事,但我找不到什么。
如何使用 CTest 运行测试?
该宏enable_testing()在构建目录中创建 ctest 配置文件。要找到此文件,需要从该构建ctest目录运行。
从源目录运行ctest没有任何意义,因为它看不到 CMake 的结果(除非您进行源内构建)。
@Tsyvarev 的答案并不完全正确。您不仅必须从构建目录执行ctest,还必须从构建目录内的相对文件夹执行,其中enable_testing()相对于CMAKE_SOURCE_DIR目录被调用。
因此,例如,当CMakeLists.txt, 调用enable_testing()位于proj/tests并且您的构建目录是proj/build. 然后你就得跑ctest进去proj/build/tests。
| 归档时间: |
|
| 查看次数: |
6511 次 |
| 最近记录: |