Catch2 编译错误(没有那个文件或目录)
Catch2 compile error (no such file or directory)
我已经使用Catch2测试成功了,但是这次出现了问题。我正在将 Catch2 子模块推送到我的项目(这不是 -v2.x 分支)并将“../Catch2/src/catch2/catch_all.hpp”包含到我的测试文件中。问题是在 catch_all.hpp 中所有包含的 .hpp 文件(如 , 等等)没有找到。我检查了路径,但它们似乎没问题。有什么想法吗?
这是我的代码示例。
我正在使用命令添加一个 Catch2 子模块
git 子模块添加 https://github.com/catchorg/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目前只是一个简单的地狱世界。
TEST_CASE 也不起作用,它说“C++ 需要所有声明的类型说明符”。
您在 mainApp
中包含 test_main.cpp
和 test.cpp
。
这意味着 mainApp
中的文件尝试 #include"Catch2/src/catch2/catch_all.hpp"
而不链接到 Catch2 库并包含。
从 mainApp
源中删除测试文件,然后重试。
我已经使用Catch2测试成功了,但是这次出现了问题。我正在将 Catch2 子模块推送到我的项目(这不是 -v2.x 分支)并将“../Catch2/src/catch2/catch_all.hpp”包含到我的测试文件中。问题是在 catch_all.hpp 中所有包含的 .hpp 文件(如
这是我的代码示例。
我正在使用命令添加一个 Catch2 子模块
git 子模块添加 https://github.com/catchorg/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目前只是一个简单的地狱世界。
TEST_CASE 也不起作用,它说“C++ 需要所有声明的类型说明符”。
您在 mainApp
中包含 test_main.cpp
和 test.cpp
。
这意味着 mainApp
中的文件尝试 #include"Catch2/src/catch2/catch_all.hpp"
而不链接到 Catch2 库并包含。
从 mainApp
源中删除测试文件,然后重试。