Mac下的OpenGL环境配置

基于Xcode9.2的环境搭建 准备资源:

1、GLTools工具函数库

2、libGLTools.a

前两个可以去GitHub上去下载然后按步骤操作 https://github.com/HazimGazov/GLTools 

注意如果电脑上没有安装过CMake的,需要安装下,因为上面就需要用到CMake的终端指令。

如果要安装CMake的终端命令就需要先去官网https://cmake.org/download/下载CMake的app,

然后在输入sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install
在终端输入cmake –version 就可以查看你cmake的版本了。

CMake是一个跨平台的工程编译工具,可以根据不同的平台生成与平台相关的工程配置文件,可以用简单的语句来描述所有平台的编译过程

3、glew扩展库 这个可以通过homebrew来安装,输入brew install glew就可以了,安装的目录文件夹在/usr/local/Cellar


紧接着创建一个工程

Mac下的OpenGL环境配置_第1张图片

添加OpenGL.framework和GLUT.framework两个系统库


Mac下的OpenGL环境配置_第2张图片

然后把准备好的文件拖进去

Mac下的OpenGL环境配置_第3张图片

这个时候我们编译的时候是通过的,但是我们一旦去导入了我们添加的在include里面的头文件就会报错,报的是下面的错误

Mac下的OpenGL环境配置_第4张图片

原因就是这是我们直接手动添加进项目进去的,而在Xcode中默认<>使用与导入系统库和在CocoaPods下下载第三方框架的时候引入的时候需要用到。这里报的就是错误就是让我们用引号去#include,而不是<>。


因为编译的时候通过 #include 引入头文件的方式有两种 <> 和 ""。<> 是只从 Header Search Paths 中搜索, 而 "" 则能从  Header Search Paths 和 User Header Search Paths 中搜索。就比如说你把路径加到  User Header Search Paths 中,我们用 #include <> 的方式去引入对应的头文件,就会报错。

如果加到  Header Search Paths,  就可以了,其实区别是,<>  会去Header Search Paths中搜索文件, "" 是从对应 User Header Search Paths中搜索文件。如果我们把路径加到 User Header Search Paths 中,而 <> 无法从Header Search Paths中找到新加的路径,从而报错。


这里再补充下Xcode在编译时, Library / Header Search Paths是一定会去搜索的。而User Header Search Paths只有在Always Search User Paths为Yes时才会被搜索。


还有就是有的时候把工程发给别人可能就会出现路径的错误,这是Xcode Search Path的相对路径和绝对路径导致的。所以在修改Library / Header Search Paths这个选项的时候使用:  "$(SRCROOT)/当前工程名字/需要包含头文件所在文件夹"


将上面的双引号里面的字符串拷贝之后,你会发现这个“$(SRCROOT)”,会自动变成当前工程所以的目录。这样就可以了,发给别人,别人也不用在去修改路径了。

我们在下面做配置就可以了


这里还有一点需要注意的就是non-recursive,这个的意思就是是否会去从这个目录下递归遍历下去。意思就是比如说我们有了个include文件夹,里面还有个gl的子文件夹,如果我们在项目外面直接通过#include<>这个gl子文件夹的内容也会报相同的错误


所以我们应该设置为recursive

Mac下的OpenGL环境配置_第5张图片

然后可以删除工程中的AppDelegate.h AppDelegate.m ViewController.h ViewController.m main.m文件,现在整个项目的结构如下所示

Mac下的OpenGL环境配置_第6张图片

之后我们再去创建一个C++文件

Mac下的OpenGL环境配置_第7张图片

Mac下的OpenGL环境配置_第8张图片

之后我们编译程序可能会出现这样的错误,不要惊慌,那是因为你的main.cpp文件中还没有写main程序的入口,也就是下面的这个函数

int main()
{


}

Mac下的OpenGL环境配置_第9张图片

你可能感兴趣的:(OpenGL)