为什么即使在我的 CMake 文件中使用了"FetchContent_MakeAvailable" "#include <gtest/gtest.h>"也会失败?



这是我第一次尝试在C++中使用Google Test API,也是我第一次使用CMake。如果有用的话,我会使用CLion。我的CMake文件,如下所示,表面上应该允许文件#include <gtest/gtest.h>:

cmake_minimum_required(VERSION 3.19)
project(chord)
# GoogleTest requires at least C++11
set(CMAKE_CXX_STANDARD 11)
include(FetchContent)
FetchContent_Declare(
googletest
URL https://github.com/google/googletest/archive/609281088cfefc76f9d0ce82e1ff6c30cc3591e5.zip
)
# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -pthread")
add_executable(
chord
main.cpp
src/node.h
src/node.cpp
src/log.h
src/log.cpp
src/sha1.h
src/sha1.cpp
src/messageParser.h
src/messageParser.cpp
src/fingerTable.h
src/fingerTable.cpp
src/key.h
src/key.cpp)
include(GoogleTest)
enable_testing()
add_executable(
unitTests
test/fingerTableTests.cc
test/keyTests.cc
test/logTests.cc
test/messageParserTests.cc
test/nodeTests.cc
test/messageParserTests.cc
)
target_link_libraries(
unitTests
gtest_main
)
include(GoogleTest)
gtest_discover_tests(unitTests)

然而,当我从main.cpp尝试#include <gtest/gtest.h>时,我接收到错误gtest/gtest.h: No such file or directory。有人能指出我的CMake文件中的错误吗?谢谢,很抱歉给你带来麻烦。

尝试链接gtest:

target_link_libraries(
unitTests
gtest_main
gtest
)

最新更新