You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Mac M1的VS Code中链接GLEW(OpenGL)库

在Mac上为C++项目添加GLEW库并更新Makefile的问题

问题描述

我正在用C++开发项目,已经成功链接GLFW库,但不知道如何添加GLEW库:

  • 从GLEW官网下载通用压缩包解压后,只有头文件,库文件夹是空的;官网仅提供Windows版本下载链接,虽说明支持Mac但无对应安装包
  • 看到他人代码仓库的依赖文件夹lib子目录里有GLEW库文件,因此确认Mac版本应有对应的库文件
  • 同时不确定如何修改当前的Makefile来正确链接GLEW

当前Makefile代码

CXX = g++
OUTPUT = app

CXX_FILES = $(wildcard ./src/*.cpp)
CXX_FLAGS = -Wall -g -std=c++17 -DGL_SILENCE_DEPRECATION

LIB_DIR = src/vendors/lib
INCLUDE_DIR = src/vendors/include

# Adjusting LDFLAGS
LDFLAGS = -lpthread -lglfw.3 -lGlew -framework Cocoa -framework OpenGL -framework IOKit

all: $(OUTPUT)

$(OUTPUT): $(CXX_FILES:.cpp=.o)
    $(CXX) $(CXX_FLAGS) -o $@ $^ -L$(LIB_DIR) $(LDFLAGS) -Wl,-rpath,$(LIB_DIR)

%.o: %.cpp
    $(CXX) $(CXX_FLAGS) -c -o $@ $< -I $(INCLUDE_DIR)

clean:
    rm -f $(OUTPUT) $(CXX_FILES:.cpp=.o)

文件存储结构

附当前项目文件存储结构截图


解决方案

1. 获取Mac版GLEW库文件

有两种可行方式:

方式一:用Homebrew安装(推荐)

打开终端执行以下命令,Homebrew会自动安装适配Mac的GLEW头文件和库文件到系统默认目录:

brew install glew

方式二:手动编译GLEW

  • 从官网下载通用压缩包并解压
  • 终端进入解压后的目录,执行编译命令:
    make
    
  • 编译完成后,目录下会生成libGLEW.a(静态库)或libGLEW.dylib(动态库)
  • 将头文件复制到项目的src/vendors/include/GL目录,库文件复制到src/vendors/lib目录

2. 更新Makefile

根据安装方式调整Makefile:

情况一:Homebrew安装的GLEW

GLEW的头文件和库文件已在系统目录,无需额外指定LIB_DIR,只需修正链接参数的大小写(Mac上GLEW的链接参数为-lGLEW而非-lGlew),修改后的Makefile如下:

CXX = g++
OUTPUT = app

CXX_FILES = $(wildcard ./src/*.cpp)
CXX_FLAGS = -Wall -g -std=c++17 -DGL_SILENCE_DEPRECATION

# 保留GLFW的头文件路径
INCLUDE_DIR = src/vendors/include

LDFLAGS = -lpthread -lglfw.3 -lGLEW -framework Cocoa -framework OpenGL -framework IOKit

all: $(OUTPUT)

$(OUTPUT): $(CXX_FILES:.cpp=.o)
    $(CXX) $(CXX_FLAGS) -o $@ $^ $(LDFLAGS)

%.o: %.cpp
    $(CXX) $(CXX_FLAGS) -c -o $@ $< -I $(INCLUDE_DIR)

clean:
    rm -f $(OUTPUT) $(CXX_FILES:.cpp=.o)

情况二:手动复制库到项目目录

确保库文件已放入src/vendors/lib,头文件在src/vendors/include/GL,只需修正链接参数的大小写即可,修改后的Makefile如下:

CXX = g++
OUTPUT = app

CXX_FILES = $(wildcard ./src/*.cpp)
CXX_FLAGS = -Wall -g -std=c++17 -DGL_SILENCE_DEPRECATION

LIB_DIR = src/vendors/lib
INCLUDE_DIR = src/vendors/include

# 修正GLEW的链接参数为-lGLEW
LDFLAGS = -lpthread -lglfw.3 -lGLEW -framework Cocoa -framework OpenGL -framework IOKit

all: $(OUTPUT)

$(OUTPUT): $(CXX_FILES:.cpp=.o)
    $(CXX) $(CXX_FLAGS) -o $@ $^ -L$(LIB_DIR) $(LDFLAGS) -Wl,-rpath,$(LIB_DIR)

%.o: %.cpp
    $(CXX) $(CXX_FLAGS) -c -o $@ $< -I $(INCLUDE_DIR)

clean:
    rm -f $(OUTPUT) $(CXX_FILES:.cpp=.o)

注意事项

  • GLEW在Mac上的库名称为libGLEW,链接时必须使用-lGLEW(全大写),原Makefile中的-lGlew会导致链接失败
  • 手动编译时,若出现编译错误,可尝试添加CFLAGS=-arch x86_64或CFLAGS=-arch arm64参数适配Mac的CPU架构

内容的提问来源于stack exchange,提问作者jerry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 07:05:20