首页 > 解决方案 > 无法将 Glew 与 Cmake 链接

问题描述

我正在使用 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. 

标签: c++openglbuildcmakeglew

解决方案


我能够将 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} 是我为我的主要目标名称设置的变量。


推荐阅读