我正在使用mcc来编译我的MATLAB项目。我正在使用的机器上安装了许多MATLAB工具箱,但我的代码只需要一些(例如distcomp和images)。但是,每当我运行mcc时,它最终会“处理”许多工具箱的mcc.enc文件,包括那些我的代码不需要的工具箱。
这是mcc输出的开头(我用-R '-nodisplay'
运行它以与我正在使用的集群兼容)。
Warning: No display specified. You will not be able to display graphics on the screen.
Compiler version: 4.15 (R2011a)
Processing /cm/shared/apps/matlab/7.12.0/toolbox/matlab/mcc.enc
Processing /cm/shared/apps/matlab/7.12.0/toolbox/distcomp/mcc.enc
Processing /cm/shared/apps/matlab/7.12.0/toolbox/images/mcc.enc
Processing /cm/shared/apps/matlab/7.12.0/toolbox/stats/mcc.enc
Processing /cm/shared/apps/matlab/7.12.0/toolbox/shared/imageslib/mcc.enc
Processing /cm/shared/apps/matlab/7.12.0/toolbox/shared/system/mcc.enc
Processing /cm/shared/apps/matlab/7.12.0/toolbox/shared/spcuilib/mcc.enc
Processing /cm/shared/apps/matlab/7.12.0/toolbox/control/mcc.enc
Processing /cm/shared/apps/matlab/7.12.0/toolbox/shared/controllib/engine/mcc.enc
Processing /cm/shared/apps/matlab/7.12.0/toolbox/shared/controllib/general/mcc.enc
Processing /cm/shared/apps/matlab/7.12.0/toolbox/signal/mcc.enc
Processing /cm/shared/apps/matlab/7.12.0/toolbox/nnet/mcc.enc
我注意到在桌面上运行mcc时它也会做同样的事情。其中一些mcc.enc文件(特别是... / signal / mcc.enc和... / nnet / mcc.enc)需要更多的时间来处理,而不是执行其余的mcc。有没有办法排除处理不需要的mcc.enc文件?
答案 0 :(得分:4)
使用MATLAB IDE中的“deplyment tool”,进入项目设置,从“路径上的工具箱”选项卡中,取消选择不需要的所有工具箱。
此外,还有一个mcc
参数-N
清除路径中的所有文件夹,只保留核心MATLAB文件夹。
-N清除路径
传递-N有效地清除除了以外的所有文件夹的路径 以下核心文件夹(此列表可能随时间而变化):
- matlabroot /工具箱/ MATLAB
- matlabroot /工具箱/本地
- matlabroot /工具箱/编译器/部署
它还会保留上面显示的上述列表的所有子文件夹 编译时的MATLAB路径。在命令行中包含-N允许 您要保留原始路径中的文件夹,同时保留 包含文件夹的相对排序。所有的子文件夹 还包括原始路径上显示的包含文件夹。 此外,-N选项保留用户拥有的所有文件夹 包含在不在matlabroot / toolbox下的路径上。
答案 1 :(得分:0)
我建议使用Matlab中央文件交换中的«fdep»功能:
此函数应用于程序的主函数将告诉您正在使用的工具箱和正在使用的所有函数(递归,因此列出了所有元素函数,您不应错过任何函数)。减少最终exe的大小和编译时间非常有用。