CMake 和 vcpkg 找不到 GLFW 目录

seg*_*ult 2 c++ cmake glfw visual-studio vcpkg

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

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

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

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

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

来自 MSVC 的错误:

fatal error C1083: Cannot open include file: 'GLFW/glfw3.h': No such file or directory 
Run Code Online (Sandbox Code Playgroud)

这是我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})
Run Code Online (Sandbox Code Playgroud)

GLFW3_LIBRARIESglfw3Config.cmake通过窥探vcpkg安装目录中的内容(~\vcpkg\installed\x86-windows\share\glfw3

以防万一,main.cpp

#include <GLFW/glfw3.h>

int main()
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

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

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

vre*_*vre 5

重新整理我之前的评论作为答案:

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