Mac 10.11.6 让Matlab2014b 使用Xcode8.1进行mex编译的方法

来源:互联网 发布:淘宝明星店铺怎么申请 编辑:程序博客网 时间:2024/06/10 16:14
近日下载了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。




原创粉丝点击