在Mac OSX 10.9上使用GLFW库实现OpenGL 3.3/4.1

20

我现在正在尝试在我的Mac OSX 10.9上使用OpenGL 3.3/4.1,这个版本终于可用了。我一直使用《OpenGL超级宝典5》一书和其中的示例来学习3.3版。但是当我的顶点着色器开始拒绝编译时,我才发现它实际上只运行OpenGL 2.1版。我发现我需要获取GLFW库来为我处理OpenGL窗口。这个库将使我能够使用Mac OS X能够运行的4.1版OpenGL。我的问题是,是否有人有Mac OSX 9 OpenGL库GLFW版本3.0.4的静态版本可以发送给我?从头开始构建库有点麻烦,因为涉及安装CMake,然后是库代码,然后尝试让它们一起工作并编译。我实际上只需要该库以便开始运行OpenGL 3.3/4.1。


顺便说一句,如果我是你,我会停止称呼它为Mac OSX 9。我看到这个名字就会立刻想到“Mac OS Classic”,因为我的大脑会忽略掉“X”。实际上,这个平台/版本的官方名称是Mac OS X 10.9。 - Andon M. Coleman
嗨,亚当。好的,谢谢。如果我说了OSX 9,那是我的错误!我以为每个人都知道那是Maverics。 - user3600260
是的,这有点令人困惑,因为在OS X之前,苹果公司只有“Mac OS”。在他们转向OS X之前,有一个名为Mac OS 9的版本。当OS X首次发布时,机器会同时搭载它和Mac OS 9的副本(以便与旧软件兼容)。那被亲切地称为“Mac OS Classic”。所以对于老练的OS X用户来说,称其为Mac OSX 9可能会非常令人困惑 ;) - Andon M. Coleman
3个回答

32
我建议通过homebrew安装glfwhttp://brew.sh/。这样做的好处是,您可以始终通过brew uninstall glfw3命令整洁地卸载它!
您需要安装“Xcode的命令行工具”和Xcode https://github.com/Homebrew/homebrew/wiki/Installation xcode-select --install 安装Homebrew后,打开终端并运行以下命令: brew update brew tap homebrew/versions 对于glfw3,请运行brew install glfw3或对于glfw2,请运行brew install glfw2
此外,如果您需要进行静态构建,请使用标志--staticbrew install --static glfw3 库文件和头文件将位于/usr/local/lib/usr/local/include
现在,如果您有一个依赖于opengl和glfw的程序,您需要像这样编译它: gcc program.c -o myapp -framework OpenGl -lglfw3(或-lglfw2)
如果您仍然遇到glfw头文件的问题,可以执行以下操作: gcc program.c -o myapp -framework OpenGl -I/usr/local/include -lglfw3

无法在我的brew中使用!错误:glfw3没有可用的公式 正在搜索公式... 正在搜索tap... homebrew/versions/glfw3 - Pranjal Mittal
5
目前,运行brew install glfw将安装glfw-3.2.1版本,而其最简单的使用方式为g++ main.cpp -lglfw - Hustlion
1
@Pranjal @Hustlion 似乎不再正确 - 没有名为 glfwglfw3 的公式。 - Chris Burt-Brown
我能够从brew安装该软件包。只需要使用“glfw”作为编译器库链接,而不是“glfw3”。 - Connor Clark
在2023年,这在Apple Silicon上的macOS(我使用的是12.6版本)上仍然可以基本运行。正如@ConnorClark所说,glfw3→glfw。我要注意的是,brew install没有将任何内容放入/usr/local/lib/usr/local/include。也许这是一个新的Homebrew惯例?您可能需要调整搜索路径。 - Craig Reynolds

27
要从源代码构建GLFW库,只需要几个步骤:
  1. 下载并提取GLFW源代码。

  2. 打开终端。

  3. cd到提取的目录。

  4. 输入cmake .,按回车键。

  5. 将为您创建一个Makefile文件。

  6. 输入make,按回车键。

  7. 编译完成后,输入sudo make install

库将被复制到/usr/local/lib/,头文件将被复制到/usr/local/include/

注意:您需要安装编译器套件才能构建软件,这通常是XCode命令行工具包。要安装此工具包,请从商店安装和启动XCode,或从开发者网站下载工具。


嗨,亚当。非常感谢。我现在会尝试这个。我很擅长编程非实时图形,但在OpenGL方面还不太行。 - user3600260
嗨,亚当,非常感谢。你真是个救星。这个方法非常有效。在我安装到/user/local/libs和include目录之前,我确实需要在Maverics中启用root用户才能"su root"并进行安装。否则,我没有权限安装到这个目录。蒂姆 - user3600260
1
没问题!太好了,它能正常工作。只是提醒一下,你可以使用sudo <command>来以root权限运行命令,而不是su root,例如sudo make install。(别忘了将这个答案标记为已接受;-)) - Appleshell

6
如果您在链接器方面遇到困难,请尝试像这样编译:
g++ youSource.cpp -I/usr/local/include -L/usr/local/lib -lglfw3 -framework Cocoa -framework OpenGL -framework IOKit -framework CoreFoundation -framework CoreVideo

或者只需:
g++ youSource.cpp -I/usr/local/include `pkg-config --cflags glfw3`  `pkg-config --static --libs glfw3`

第一条命令对我有用。您介意解释一下后面的部分吗?(-framework Cocoa -framework OpenGL -framework IOKit -framework CoreFoundation -framework CoreVideo) - Gregory-Turtle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接