c++ - 无法将 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.
解决方案
我能够将 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} 是我为我的主要目标名称设置的变量。
推荐阅读
- spring-boot - 使用rest模板将文本表单数据curl请求转换为java代码
- javascript - 每个元素的单击事件或文档上的所有单击事件?
- performance - Prometheus 不会从 PCP pmproxy 中抓取所有指标
- tensorflow - 继续训练 CoreML 模型
- python - ElementTree 不打印属性
- node.js - 带有打字稿的redis客户端del函数出错
- apache-flink - pyflink中的socketTextStream在哪里
- javascript - 单击菜单图标使页面跳回顶部
- python - 为什么背景恢复正常?
- swift - 一些日期在 JTCalendar Swift 的滚动条上消失并重新出现