无法将 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 链接的问题

GLEW + cmake 链接失败“未定义对符号 glDrawElements 的引用”+“命令行中缺少 DSO”

我无法将 GLEW 库链接到我的 Xcode 项目

GLEW 不适用于 CMAKE

无法将 sndfile 库链接到 cmake 项目(MacOS)

GLEW 无法初始化