vin*_*nus 4 c matlab xcode compilation mex
我想在不安装 xcode 的情况下编译 mex 文件,仅使用命令行工具(来自苹果开发人员中心)。
Apple Command Line Tools 安装编译器,并将标准库和标头添加到系统中,其包大小比 xcode 小得多(几 GB)。
在 Linux 上运行 mex 是可能的 - 我认为 matlab mex 没有理由需要 macos 所需的庞大 SDK。一个漫长的夜晚的反复试验和黑客配置文件并没有帮助。有谁有一个关于如何在 matlab 之外编译 mex 文件的最小工作示例,或者有一个在不安装 xcode 的情况下使用 mex 的简单方法?
最好的问候,马格努斯
小智 7
好吧,我这里还有另一个选择:编辑下面的文件/Applications/MATLAB_R2016b.app/bin/maci64/mexopts(可能应该有3.xml文件,都需要相同的修改)。
找到该<XCODE_AGREED_VERSION>部分,注释整个 xml 标记,例如用<!--和包裹它们-->,如下所示:
<!--XCODE_AGREED_VERSION>
<and diagnostic="Xcode is installed, but its license has not been accepted. Run Xcode and accept its license agreement." >
<or>
<cmdReturns name="defaults read com.apple.dt.Xcode IDEXcodeVersionForAgreedToGMLicense"/>
<cmdReturns name="defaults read /Library/Preferences/com.apple.dt.Xcode IDEXcodeVersionForAgreedToGMLicense"/>
</or>
<cmdReturns name=" agreed=$$ if echo $agreed | grep -E '[\.\"]' >/dev/null; then lhs=`expr "$agreed" : '\([0-9]*\)[\.].*'` rhs=`expr "$agreed" : '[0-9]*[\.]\(.*\)$'` if echo $rhs | grep -E '[\."]' >/dev/null; then rhs=`expr "$rhs" : '\([0-9]*\)[\.].*'` fi if [ $lhs -gt 4 ] || ( [ $lhs -eq 4 ] && [ $rhs -ge 3 ] ); then echo $agreed else exit 1 fi fi" />
</and>
</XCODE_AGREED_VERSION -->
Run Code Online (Sandbox Code Playgroud)
一些注意事项:
这些文件默认是只读的,你需要sudo chmod
644 *在该目录下发出
注释掉所有必要的文件后,在 matlab 中发出以下命令:
mex -setup C++
然后你就完成了
| 归档时间: |
|
| 查看次数: |
3833 次 |
| 最近记录: |