在 CMake 和 vcpkg 中找不到 GLFW 目录
GLFW directory not found with CMake and vcpkg
在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 文件中
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- C++系统找不到指定的文件错误
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 在 CMake 和 vcpkg 中找不到 GLFW 目录
- 找不到GLFW功能
- GLFW 找不到监视器