我已经成功地使用了Catch2进行测试,但这一次出现了问题。我将Catch2子模块推送给我的项目(这不是-v2.x分支),并将“./catch 2/src/ and 2/ not _all.hpp”包含到我的测试文件中。问题是,在catch_all.hpp中没有找到所有包含的.hpp文件(如<.hpp 2/benchmark/catch_benchmark_all.hpp>、<.hpp 2/catch_Apx.hpp>等等)。我检查过路径,但它们看起来很好。有什么好主意吗?
下面是我的代码示例。
我正在添加一个带有命令的Catch2子模块
git子模块添加
CMakeFile.txt:
cmake_minimum_required(VERSION 3.20)
project(proj)
set(CMAKE_CXX_STANDARD 17)
set (sources
./main.cpp
./test_main.cpp
./test.cpp)
add_executable(mainApp ${sources})
target_compile_options(mainApp PRIVATE -Wall -pedantic -std=c++17)
target_link_libraries(mainApp)
set (tests
./test_main.cpp
./test.cpp)
add_subdirectory(Catch2)
add_executable(runTests ${tests})
target_compile_options(mainApp PRIVATE -g)
target_link_libraries(runTests PRIVATE Catch2::Catch2WithMain)test_main.cpp:
#define CATCH_CONFIG_MAIN
#include"Catch2/src/catch2/catch_all.hpp"test.cpp:
#include"Catch2/src/catch2/catch_all.hpp"
TEST_CASE("BasicTest_1", "FirstTest") {
REQUIRE(1 == 1);
}main.cpp现在只是一个简单的helloworld。
TEST_CASE也不起作用,它说"C++需要所有声明的类型说明符“。
发布于 2021-11-26 12:04:48
您包括test_main.cpp和test.cpp在mainApp中。
这意味着mainApp中的文件在不链接到Catch2库的情况下尝试使用Catch2,并且包括。
从mainApp源删除测试文件,然后再试一次。
https://stackoverflow.com/questions/70122761
复制相似问题