我一直无法弄清楚如何在使用VS2017的CMake时使CMake找到并设置正确的GLFW CMake常量。任何帮助将不胜感激 :).
我通过Microsoft的vcpkg工具下载了glfw3。我已经检查了vcpkg放置文件的目录(~\vcpkg\installed\x86-windows\include),确认文件确实存在于该目录中。我按照它们的文档在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
是我从glfw3Config.cmake
中获取的,通过查看vcpkg
安装目录(~\vcpkg\installed\x86-windows\share\glfw3
)的内容。
以防万一,这是main.cpp
:
#include <GLFW/glfw3.h>
int main()
{
return 0;
}
我也尝试从命令行调用cmake
,但是没有用,也不起作用。
我是否漏掉了什么?我可能误解了vcpkg
文档中的某些内容吗?我真的不知道我漏掉了什么... :/ 另外,我应该说,我对CMake也相当新手。
glfw
或glfw3
添加到你的target_link_libraries
命令中,而不是${GLFW3_LIBRARIES}
?这样应该可以解决你看到的错误。 - vreglfw
终于成功了 :D!您能否把您的评论发布为答案,这样我就可以关闭问题了吗?非常感谢!如此简单... - segmentation_fault