Xcode10配置OpenGL的SOIL

不要用learnopengl-cn官网给的SOIL下载地址,可以去https://github.com/DeVaukz/SOIL下载针对macOS优化过的SOIL。下载下来长这样?

Xcode10配置OpenGL的SOIL_第1张图片

如果仅仅是在Xcode中添加SOIL.h头文件的地址,会得到编译错误:

Xcode10配置OpenGL的SOIL_第2张图片

原因出在没有添加动态链接库,所以我们的目的就是要生成.dylib文件。terminal中执行步骤如下:

1. cd到下载文件的build文件夹

2. cmake .. -G "Unix Makefiles" (cmake是一个跨平台编译工具,可移步http://cmake.org下载。cmake命令的功能是把写好的CMakeLists.txt文件转化为make命令所需要的makefile文件)

Xcode10配置OpenGL的SOIL_第3张图片

此时长这样?

Xcode10配置OpenGL的SOIL_第4张图片

3. make (功能是编译源码生成可执行程序或共享库)

Xcode10配置OpenGL的SOIL_第5张图片

4. make install

Xcode10配置OpenGL的SOIL_第6张图片

最后长这样?

Xcode10配置OpenGL的SOIL_第7张图片

至此就生成了我们翘首以待的.dylib文件!在Xcode的Library Search Paths里添加动态链接库的路径并拖一个.dylib文件到Link Binary With Libraries中,就可以愉快地使用SOIL.h啦!

 

----------------------------------------

但实际配置过程是困难重重,折腾了将近一天,网上相关的方案几乎都尝试了一遍,每次总是在感觉快完事的时候出现新的问题,最后还是向同学求助才得以解决。凌晨一点在心里大声欢呼,心情大概就是“又可以排其它的bug了!开心!”:)

问题及解决:

1. cmake指令无法顺利generate,给出一些类似下图的warning,如果无视warning继续make就会报错

Xcode10配置OpenGL的SOIL_第8张图片

Xcode10配置OpenGL的SOIL_第9张图片

有人执行sudo xcode-select --reset有用,不过我是去苹果官网https://developer.apple.com/download/more/?=xcode下载Xcode对应的Command Line Tools安装之后才顺利generate的。

2.  make指令报错

报错看起来和32位被弃用有关,网上有说Xcode 9.4及之前的版本可以编译32位,然而在卸载Xcode10下载Xcode9之后悲惨地发现对应的Command Line Tools 9系列并不能在macOS 10.14安装,只能另寻出路。

尝试在步骤2中使用README里提到的cmake .. -G Xcode,得到generating done后长这样?

Xcode10配置OpenGL的SOIL_第10张图片

打开SOIL.xcodeproj,如果能运行的话就可以生成我们期盼的库文件。然而:

Xcode10配置OpenGL的SOIL_第11张图片

它说targets被configure for 32-bit,而macOS 10.14 Xcode10中i386已被弃用,也就是我们只能编译64-bit的,所以回头检查cmake之前的步骤,看能不能configure成for 64-bit的。打开CMakeLists.txt,两个i386赫然入目:

Xcode10配置OpenGL的SOIL_第12张图片

重新下载SOIL,删掉CMakeLists.txt中的i386字眼后再执行开头4步,终于成功了。

 

-------------------------------------------

个人总结:

1.保持头脑清醒,不要十一点才开始搞然后折腾到一点,白天那么多时间干嘛去了,少看手机。

2.不要瞎试、反复试同样的方法,要动脑分析问题的原因,从报错中提取信息。

3.如果花了一个下午都解决不了,就别再自己蒙头搞了,向周围同学寻求帮助也不是啥难事。将心比心,有人向我求助我也会热心帮忙的嘛。脸皮要厚一点。

4.花很多时间还解决不了问题,别丧,这很正常啊,你看网上那么多搜同样问题的人,you are not alone, 主动调节心情,跑步洗衣服看看书都可,别给自己找理由偷懒。

5.虽然花了快一天才配好SOIL,但尝试解决问题的过程中接触了不少新东西。比如cmake、补丁文件(diff与patch命令的使用)。一开始连自己要解决的到底是啥都懵懵的无脑搜,后来才慢慢清晰起来。也是这几天学OpenGL集中配置环境才算是对Xcode熟悉起来(头文件路径、lib路径、拖文件到Link Binary With Libraries),上学期配sqlite、gtk倒腾了几天但也做没技术上的总结。在图书馆拿了本《Xcode江湖录》,记下了些小知识:.a是静态库,.dylib是动态库,framework是框架,bundle是包。Xcode有专门管理库的工具Cocoa,博大精深,有待使用。playground只能用swift,算是实时编译的交互式开发环境,可翻译成训练场。

6.认真阅读README,代码都可以点开看看,比如这次要打开cmakefile才会找到问题。阅读英文应当是一件非常自然流畅的事。

Xcode10配置OpenGL的SOIL_第13张图片

 

 

你可能感兴趣的:(OpenGL)