近日下载了libSVM,打算学习一下。
然鹅,我的matlab2014b在第一步就给我挖了个坑。。。由于我有升级APP的好习惯,Xcode早被我升级到了8.1版本,悲剧的是,matlab2014b显然不可能认识这么新的Xcode。
上网搜索一番,从这个文章找到了思路。
http://blog.csdn.net/xia4o/article/details/50511629
原文给出了一个修改好的Xcode7的解决方案。仔细研究了一下,发现关键之处在于里面的bin\maci64\mexopts\*.xml文件中的内容。
Xcode8.1对应的Mac SDK版本是什么呢?从Xcode.app里面找吧。答案是10.12
所以把所有xml文件中,
<ISYSROOT>
<and>
<cmdReturns name="xcode-select -print-path"/>
<or>
<dirExists name="$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk" />
<dirExists name="$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk" />
<dirExists name="$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk" />
<cmdReturns name="find $$ -name MacOSX10.10.sdk" />
<cmdReturns name="find $$ -name MacOSX10.11.sdk" />
<cmdReturns name="find $$ -name MacOSX10.12.sdk" />
</or>
</and>
</ISYSROOT>
以及
<SDKVER>
<and>
<and>
<cmdReturns name="xcode-select -print-path"/>
<or>
<dirExists name="$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk" />
<dirExists name="$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk" />
<dirExists name="$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk" />
<cmdReturns name="find $$ -name MacOSX10.10.sdk" />
<cmdReturns name="find $$ -name MacOSX10.11.sdk" />
<cmdReturns name="find $$ -name MacOSX10.12.sdk" />
</or>
</and>
<cmdReturns name="echo $$ | rev | cut -c1-10 | rev | egrep -oh '[0-9]+\.[0-9]+'" />
</and>
</SDKVER>
里面,依葫芦画瓢,增加一行关于10.12的就好。
注意,是所有在mexopts目录下的xml文件都要改。
弄好之后,重启matlab,输入命令
mex -setup
好了,现在可以愉快的编译libsvm了。
友情提醒,如果各位按照我的方法做,千万记得先给原来的mexopts目录整体备份一下,以防万一。本人只是自己测试通过,不对此方法可能造成的未知问题负责。
Use at your own risk。