簡體   English   中英

Catch2 編譯錯誤(沒有這樣的文件或目錄)

[英]Catch2 compile error (no such file or directory)

我已經使用 Catch2 成功測試了,但是這次出現了問題。 我將 Catch2 子模塊推送到我的項目(這不是 -v2.x 分支)並將“ ../Catch2/src/catch2/catch_all.hpp ”包含到我的測試文件中。 問題是在 catch_all.hpp 中找不到所有包含的.hpp文件(如<catch2/benchmark/catch_benchmark_all.hpp><catch2/catch_approx.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"

測試.cpp:

#include"Catch2/src/catch2/catch_all.hpp"

TEST_CASE("BasicTest_1", "FirstTest") {
    REQUIRE(1 == 1);
}

main.cpp現在只是一個簡單的 helloworld。

TEST_CASE 也不起作用,它說“C++ 需要所有聲明的類型說明符”。

您將test_main.cpptest.cppmainApp中。

這意味着mainApp中的文件嘗試#include"Catch2/src/catch2/catch_all.hpp"而不鏈接到 Catch2 庫和包含。

mainApp源中刪除測試文件,然后重試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM