CMake 和 vcpkg 找不到 GLFW 目录
GLFW directory not found with CMake and vcpkg
在 VS2017 中使用 CMake 时,我一直无法弄清楚如何让 CMake 找到并设置正确的 GLFW CMake 常量。任何帮助将不胜感激:)。
我通过微软的 vcpkg
工具下载了 glfw3
。我检查过文件确实存在于 vcpkg
将它们放入 (~\vcpkg\installed\x86-windows\include
) 的目录中。我根据他们的文档 here 设置了我的 CMakeSettings.json
。我使用该教程作为正确设置 GLFW 的基础。
然后我使用 find_package(glfw3 REQUIRED)
找到 glfw3
库。这不会吐出任何错误。实际上 CMakeLists.txt
根本没有抱怨。它在抱怨的编译阶段。
之后,我将 glfw3
和 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
这是我的 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
我从 glfw3Config.cmake
那里窥探了 vcpkg
安装目录中的内容 (~\vcpkg\installed\x86-windows\share\glfw3
)
为了以防万一,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
依赖于此导入的目标,您可以指定 link 的库和要使用的包含目录。
在 VS2017 中使用 CMake 时,我一直无法弄清楚如何让 CMake 找到并设置正确的 GLFW CMake 常量。任何帮助将不胜感激:)。
我通过微软的 vcpkg
工具下载了 glfw3
。我检查过文件确实存在于 vcpkg
将它们放入 (~\vcpkg\installed\x86-windows\include
) 的目录中。我根据他们的文档 here 设置了我的 CMakeSettings.json
。我使用该教程作为正确设置 GLFW 的基础。
然后我使用 find_package(glfw3 REQUIRED)
找到 glfw3
库。这不会吐出任何错误。实际上 CMakeLists.txt
根本没有抱怨。它在抱怨的编译阶段。
之后,我将 glfw3
和 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
这是我的 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
我从 glfw3Config.cmake
那里窥探了 vcpkg
安装目录中的内容 (~\vcpkg\installed\x86-windows\share\glfw3
)
为了以防万一,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
依赖于此导入的目标,您可以指定 link 的库和要使用的包含目录。