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 次 |
最近记录: |