mac下XCODE中配置glfw

本文档详细介绍了如何在Mac上的XCODE中配置OpenGL,并提供了两种安装GLFW的方法:通过Homebrew直接下载和从源码编译。配置过程中包括设置header search paths和library search paths,以及在General设置中添加相关库。

在XCODE中配置OPENGL

最近在学习opengl,跟着https://learnopengl.com上的教程学习,在mac上配置了好久,最后在win上面配置成功后回来重新在mac上配置了一下,终于配置成功了,在此记录一下。

安装GLFW

首先,安装glfw,有两种方法,一种是直接下载编译好的,一种是下载源码自己编译。

第一种,直接下载编译好的

我这里直接用homebrew直接下载,没有安装homebrew的小伙伴自行寻找homebrew教程。

$brew install glfw 

下载后的默认路径是/usr/local/Cellar/glfw/3.3.2 后面3.3.2是你下载的版本。这个路径下有两个文件夹一个include一个lib里面是稍后要导入xcode的文件。

第二种,下载源码自己编译

这种的需要在glfw官网自己下载源码,然后用cmake编译,具体操做和https://learnopengl.com中的差不多,只是编译的时候选择环境要选xcode,然后打开工程编译就可以了,然后记住include的路径和生成的.a文件位置,这里建议如果有homebrew直接用brew下载省心很多。

开始配置

第一步,新建一个命令行工程。
第二步,点击工程名称。我这里是demo2。

### 配置OpenGL、GLEW和GLFWXcode中的集成 #### 创建新项目 创建一个新的Xcode项目,选择Command Line Tool模板。这将提供一个简单的C++环境用于编写OpenGL应用程序。 #### 安装依赖库 为了使OpenGL程序能够利用GLEW扩展以及通过GLFW管理窗口和其他输入设备,在MacOS上需确保正确安装这些第三方库[^2]。可以通过Homebrew轻松获取最新版本: ```bash brew install glew glfw3 ``` #### 设置编译器选项 进入项目的Build Settings标签页,找到Other Linker Flags项并添加`-lGLEW -lglfw3`以指定链接所需的动态库[^4]。对于头文件路径(Header Search Paths),应加入以下目录以便于访问必要的声明语句: - `/usr/local/include` - `/opt/homebrew/include`(如果使用Apple Silicon Mac) 同样地,Library Search Paths也需要相应更新为包含`.dylib`的位置: - `/usr/local/lib` - `/opt/homebrew/lib`(针对M1/M2芯片机器) #### 导入框架和支持文件 除了上述操作外,还需向工程中引入特定的系统级组件。点击Add Other...按钮导航至终端内执行命令所生成的软连接位置(desktop/Cellar替身),从中挑选出`libGLEW.dylib`与`libglfw.3.dylib`完成加载过程[^3]。 #### 初始化代码片段 最后一步是在main函数里初始化GLFW窗口,并调用GLEW来准备后续绘图工作。下面给出了一段基础示例供参考: ```cpp #include <iostream> #define GLFW_INCLUDE_GLCOREARB #include <GLFW/glfw3.h> #include <GL/glew.h> int main() { if (!glfwInit()) { std::cerr << "Failed to initialize GLFW\n"; return -1; } // Setup window hints... glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); auto* window = glfwCreateWindow(800, 600, "Test", nullptr, nullptr); if (window == NULL) { std::cerr << "Failed to create GLFW window\n"; glfwTerminate(); return -1; } glfwMakeContextCurrent(window); GLenum err = glewInit(); if (err != GLEW_OK) { std::cerr << "Failed to initialize GLEW\n"; return -1; } while(!glfwWindowShouldClose(window)) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Drawing code here... glfwSwapBuffers(window); glfwPollEvents(); } glfwDestroyWindow(window); glfwTerminate(); return 0; } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值