无法将 Glew 与 Cmake 链接
Posted
技术标签:
【中文标题】无法将 Glew 与 Cmake 链接【英文标题】:Not able to link Glew with Cmake 【发布时间】:2019-08-28 19:41:50 【问题描述】:我正在使用 OS X 上的 VScode 使用 c++ 进入 OpenGL。我已经安装了 glfw 并使用 brew 安装了 glew。我已经使用 cmake 成功构建了 glfw 库,并且可以打开一个窗口,但是当我尝试构建 glew 时,它总是给我一个错误。
这是我的 CMakeLists.txt
cmake_minimum_required (VERSION 3.5)
project (test)
set(CMAKE_CXX_STANDARD 11)
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
add_executable(test
src/main.cpp
)
add_subdirectory(glfw)
find_package(GLEW REQUIRED)
find_package(OpenGL REQUIRED)
if (GLEW_FOUND)
include_directories(glew/include)
endif()
if (APPLE)
target_link_libraries(test $GLEW_LIBRARY)
target_link_libraries(test "-framework GLUT")
target_link_libraries(test "-framework OpenGL")
endif()
target_link_libraries(test glfw $GLEW_LIBRARIES)
当我尝试“制作”它时,它给了我这个错误:
undefined symbols for architecture x86_64:"_glewInit", referenced from: _main in main.cpp.o.
【问题讨论】:
你在静态库还是动态库中使用glew?如果使用静态库,则必须设置预处理器定义GLEW_STATIC
。
我正在尝试从源代码构建它。我从 glew 的网站下载了 zip 文件并将其解压缩到我的项目目录中。
您可以尝试手动链接 GLEW 而不是使用 find_package
进行快速而肮脏的修复。
【参考方案1】:
我能够将 GLEW 包含在
brew install glew
(这一步构建 glew 并将其安装在您的系统上,所以您是说这失败了?否则,不需要进一步构建 glew。)
然后在我的*** CMakeLists.txt
find_package(GLEW 2.0 REQUIRED)
在为我的 main.cpp 设置目标的 CMakeLists.txt 中需要 #include "GL/glew.h"
我添加了以下行:
target_link_libraries($MAIN GLEW::GLEW)
$MAIN 是我为主要目标名称设置的变量。
【讨论】:
谢谢!我已经在整个互联网上搜索了三个小时,但没有人提到GLEW::GLEW
!应该在哪里找到这样的信息?有官方文档吗?以上是关于无法将 Glew 与 Cmake 链接的主要内容,如果未能解决你的问题,请参考以下文章
GLEW + cmake 链接失败“未定义对符号 glDrawElements 的引用”+“命令行中缺少 DSO”