c++ - 为什么“#include“即使在我的 CMake 文件中使用了“FetchContent_MakeAvailable”之后,也会失败?
问题描述
这是我第一次在 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)
但是,当我尝试#include <gtest/gtest.h>
从时main.cpp
,我收到错误gtest/gtest.h: No such file or directory
。有人可以查明我的 CMake 文件中的错误吗?感谢和抱歉给您带来的麻烦。
解决方案
尝试也链接gtest
:
target_link_libraries(
unitTests
gtest_main
gtest
)
推荐阅读
- visual-studio-code - VS Code Extension API:如何在树视图中显示压缩的导航项?
- javascript - 使用 Promise 关键字获取结果
- reactjs - this.props.navigation 在 React Native 中不起作用
- powershell - 您可以在 Powershell 中更改 ODBC DSN 驱动程序吗?
- model-view-controller - 未存储 Webhook C# MVC 控制器值
- r - 通过数据框解析以在 R 中创建字符串
- google-apps-script - Google 电子表格单元格中的 App Script 公式无效,需要强制重新加载
- laravel - stripe.confirmCardPayment 意图密钥的缺失值:值应该是形式为 ${id}_secret_${secret} 的客户端密钥
- javascript - 使用显示错误的 JS 在 ASP.NET 中自动注销
- java - 如何在SqlSessionFactory加载mybatis mapper xml(java配置)