2017-07-25 86 views
0

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

我通过微软的vcpkg工具下载了glfw3。我已检查确实在vcpkg放入的目录中存在文件(~\vcpkg\installed\x86-windows\include)。我按照他们的文档here设置了我的CMakeSettings.json。我使用该教程作为获得GLFW正确设置的基础。然后我使用find_package(glfw3 REQUIRED)找到glfw3库。这不会吐出任何错误。其实CMakeLists.txt根本不抱怨。它处于它投诉的编译阶段。

之后,我将glfw3target_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也是一个新手。

+0

您可以将导入的目标'glfw'或'glfw3'添加到您的'target_link_libraries'命令而不是'$ {GLFW3_LIBRARIES}'吗?这应该解决你看到的错误。 – vre

+0

@vre OMG! 'glfw'工作:D!您是否愿意发表您的评论作为答案,以便我可以解决这个问题?非常感谢!很简单... –

回答

1

重整我以前的评论的答案:

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