然鵝,我的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。