我在使用 CMake 使用 catch2 运行简单测试时遇到了一些问题。因为 catch 只是头文件,所以我觉得它很容易放入任何项目中,所以我想我会像普通头文件一样包含它。
项目结构:
-build
-external
-Catch2
catch2.hpp
CMakeLists.txt
tester.cpp
CMakeLists.txt:
cmake_minimum_required(VERSION 3.12)
project(Test VERSION 1.0.0)
include_directories(external)
enable_testing()
add_executable(tester tester.cpp)
add_test(Tester tester)
测试仪.cpp:
#define CATCH_CONFIG_MAIN
#include "Catch2\catch.hpp"
TEST_CASE( "1 is 1" ) {
REQUIRE( 1 == 1 );
}
输出:
0% tests passed, 1 tests failed out of 1
Total Test time (real) = 0.03 sec
The following tests FAILED:
1 - Tester (Exit code 0xc0000139
)
Errors while running CTest
显然测试应该通过,但它没有。由于我是 CMake 和 catch2 领域的初学者,我很难确定问题所在。我可以肯定地说的catch.hpp
是找到并且没有链接器错误,它只是返回一些错误代码。
我环顾四周,发现了这个:
在 catch 测试用例中实现时找不到库中的 CMake Header
但它没有答案,反正作者似乎也没有同样的问题。
这就是我构建和运行测试的方式(位于构建目录中):
cmake .. -G "MinGW Makefiles" && mingw32-make && ctest
任何帮助都值得赞赏:)