3

我正在使用 mcc 编译我的 MATLAB 项目。我正在使用的机器上安装了许多 MATLAB 工具箱,但我的代码只需要几个(例如 distcomp 和图像)。但是,每当我运行 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 文件?

4

2 回答 2

4

使用 MATLAB IDE 中的“部署工具”,转到项目设置,然后从“路径上的工具箱”选项卡中,取消选择所有不需要的工具箱。

截屏

此外,还有一个mcc参数-N可以清除路径中的所有文件夹,只保留核心 MATLAB 文件夹。

-N 清除路径

传递 -N 有效地清除除以下核心文件夹之外的所有文件夹的路径(此列表会随时间变化):

  • matlabroot/工具箱/matlab
  • matlabroot/工具箱/本地
  • matlabroot/工具箱/编译器/部署

它还保留编译时出现在 MATLAB 路径上的上述列表的所有子文件夹。在命令行中包含 -N 允许您从原始路径替换文件夹,同时保留包含文件夹的相对顺序。出现在原始路径上的包含文件夹的所有子文件夹也包括在内。此外,-N 选项保留用户已包含在路径中但不在 matlabroot/toolbox 下的所有文件夹。

于 2012-07-20T14:53:25.157 回答
0

我建议使用 Matlab 中央文件交换中的 «fdep» 函数:

http://www.mathworks.com/matlabcentral/fileexchange/17291-fdep--a-pedestrian-function-dependencies-finder

此函数应用于程序的主要函数,将告诉您正在使用的工具箱以及正在使用的所有函数(递归地,因此列出了所有基本函数,您不应错过任何函数)。减少最终 exe 的大小和编译时间非常有用。

于 2016-04-07T07:28:54.940 回答