在 CMake 和 vcpkg 中找不到 GLFW 目录

GLFW directory not found with CMake and vcpkg

本文关键字:找不到 GLFW 目录 vcpkg CMake      更新时间:2023-10-16

在VS2017中使用CMake时,我一直无法弄清楚如何让CMake查找并设置正确的GLFW CMake常量。任何帮助将不胜感激:)。

我通过Microsoft的vcpkg工具下载了glfw3。我已经检查了文件是否实际存在于vcpkg将它们放入的目录中(~vcpkginstalledx86-windowsinclude(。我根据他们的文档设置了我的CMakeSettings.json这里.我使用该教程作为正确设置 GLFW 的基础。

然后,我使用find_package(glfw3 REQUIRED)查找glfw3库。这不会吐出任何错误。实际上,CMakeLists.txt根本不抱怨。它在编译阶段抱怨。

之后,我将带有target_link_libraries(exe ${GLFW3_LIBRARIES})glfw3添加到可执行文件中。

然后,当我尝试构建一个简单的示例(包括头文件(时,编译失败,因为它找不到GLFW/glfw3.h

来自 MSVC 的错误:

fatal error C1083: Cannot open include file: 'GLFW/glfw3.h': No such file or directory 

这是我CMakeLists.txt补充参考:

cmake_minimum_required(VERSION 3.7)
project(learn-opengl)
find_package(glfw3 REQUIRED)
add_executable(learn-opengl main.cpp)
target_link_libraries(learn-opengl ${GLFW3_LIBRARIES})

GLFW3_LIBRARIES我通过窥探vcpkg放入已安装目录中的内容从glfw3Config.cmake中得到

的(~vcpkginstalledx86-windowsshareglfw3

(以防万一,main.cpp

#include <GLFW/glfw3.h>
int main()
{
return 0;
}

我也尝试从命令行调用cmake,但也无济

于事。我错过了什么吗?我是否误解了vcpkg文档中的某些内容?我真的不知道我错过了什么... :/此外,我应该说,我对CMake也很陌生。

将我之前的评论重新表述为答案:

应将导入的目标glfw添加到target_link_libraries命令中,而不是${GLFW3_LIBRARIES}find_package(glfw3)会生成导入目标glfw。通过使目标learn-opengl依赖于此导入的目标,可以指定要链接的库和要使用的包含目录。

您可以在 vcpkg 目录中使用.vcpkg integrate project命令,它会为您提供一些使用 nuget 安装 vcpkg 的说明,按照这些说明进行操作,您只需将#include <GLFW/glfw3.h>放入 cpp 文件中