Matlab `mcc`:编译可执行文件时要包含的所有 m 文件?
Matlab `mcc`: All m-files to include when compiling executable?
我有一个创建自定义对象和 运行s 的 Matlab 脚本 go.m
一套模拟。有兴趣将其移植到
Matlab 许可证很少的不同网络。我们的
策略是将脚本编译成独立的*.exe
这样它就可以 运行 而无需用完许可证。一旦我发现
万事俱备,Matlab Compiler Runtime 将被安装
在目标系统上。
我设法使用命令行 mcc
编译了 TMW 在线示例,
magicsquare。
使用 cygwin
的 bash:
$ cd ~/bin
$ ln -s "/c/Program Files/MATLAB/Single_R2015b/bin/mcc.bat" mcc
$ cd ~/tmp/magicSqr
$ mcc -m magicsquare.m
# startup.m messages indicate that this launches Matlab
$ ./magicsquare.exe 5
Running C:\cygwin64\tmp\User.Name\mcrCache9.0\magics1\Users\User.Name\Documents\MATLAB\startup
m = 17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
目录说明 .
和文件扩展名 .exe
需要。
我的下一步是推动成熟的 go.m
通过
过程,看看什么中断,并找到最简单的方法来处理
它。最简单,我的意思是需要最少代码的策略
修改,以便我不维护单独的代码库
开发与移植到目的地。
mcc
编译成功:mcc -m go.m
。 运行 *.exe
然而,文件在第一个可执行语句处导致损坏:
profile off
。正如我所说,在个人基础上进行战术重新编码
非常难吃,所以我搜索了一种方法来识别所有文件
包括 when 运行ning mcc
。两个有希望的线索是 inmem
和
requiredFilesAndProducts
。
但是,上面的网页也警告:
Do not use the Dependency Report to determine which MATLAB code
files someone else needs to run a particular file. Instead use the
matlab.codetools.requiredFilesAndProducts function.
出现要避免的依赖关系报告指的是
mfiles 从 inmem
输出。这通过检查得到证实
说的 m 文件——列表非常长,并且包含函数
连 Matlab 的 which
命令都弄糊涂了:
>> which matricize
'matricize' not found.
识别要包含的 m 文件的唯一其他候选者是
fList 来自 requiredFilesAndProducts
的输出。好像包括
我的自定义 类 的所有方法,以及所有调用的 m 文件
居住在 c:\Users\User.Name\Documents\MATLAB\
(唯一
我的路径中的自定义文件夹)。但是,它肯定不包括
profile
导致上述错误的命令。
识别所有 m 文件 and/or 文件夹的最佳方法是什么
mcc
?然后治疗任何剩余的是否合理
使用条件执行的错误语句,例如 if
~isdeployed; <...problematic statements...>; end
?
您可以在此处参考文档页面上的列表,了解有关使用 MATLAB Compiler 和 MATLAB Compiler SDK 产品编译的不支持函数的信息:
https://www.mathworks.com/help/compiler/unsupported-functions.html
下面的这一页还展示了与 MATLAB Compiler 与各个工具箱的兼容性:
https://www.mathworks.com/products/compiler/supported/compiler_support.html
我有一个创建自定义对象和 运行s 的 Matlab 脚本 go.m
一套模拟。有兴趣将其移植到
Matlab 许可证很少的不同网络。我们的
策略是将脚本编译成独立的*.exe
这样它就可以 运行 而无需用完许可证。一旦我发现
万事俱备,Matlab Compiler Runtime 将被安装
在目标系统上。
我设法使用命令行 mcc
编译了 TMW 在线示例,
magicsquare。
使用 cygwin
的 bash:
$ cd ~/bin
$ ln -s "/c/Program Files/MATLAB/Single_R2015b/bin/mcc.bat" mcc
$ cd ~/tmp/magicSqr
$ mcc -m magicsquare.m
# startup.m messages indicate that this launches Matlab
$ ./magicsquare.exe 5
Running C:\cygwin64\tmp\User.Name\mcrCache9.0\magics1\Users\User.Name\Documents\MATLAB\startup
m = 17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
目录说明 .
和文件扩展名 .exe
需要。
我的下一步是推动成熟的 go.m
通过
过程,看看什么中断,并找到最简单的方法来处理
它。最简单,我的意思是需要最少代码的策略
修改,以便我不维护单独的代码库
开发与移植到目的地。
mcc
编译成功:mcc -m go.m
。 运行 *.exe
然而,文件在第一个可执行语句处导致损坏:
profile off
。正如我所说,在个人基础上进行战术重新编码
非常难吃,所以我搜索了一种方法来识别所有文件
包括 when 运行ning mcc
。两个有希望的线索是 inmem
和
requiredFilesAndProducts
。
但是,上面的网页也警告:
Do not use the Dependency Report to determine which MATLAB code files someone else needs to run a particular file. Instead use the matlab.codetools.requiredFilesAndProducts function.
出现要避免的依赖关系报告指的是
mfiles 从 inmem
输出。这通过检查得到证实
说的 m 文件——列表非常长,并且包含函数
连 Matlab 的 which
命令都弄糊涂了:
>> which matricize
'matricize' not found.
识别要包含的 m 文件的唯一其他候选者是
fList 来自 requiredFilesAndProducts
的输出。好像包括
我的自定义 类 的所有方法,以及所有调用的 m 文件
居住在 c:\Users\User.Name\Documents\MATLAB\
(唯一
我的路径中的自定义文件夹)。但是,它肯定不包括
profile
导致上述错误的命令。
识别所有 m 文件 and/or 文件夹的最佳方法是什么
mcc
?然后治疗任何剩余的是否合理
使用条件执行的错误语句,例如 if
~isdeployed; <...problematic statements...>; end
?
您可以在此处参考文档页面上的列表,了解有关使用 MATLAB Compiler 和 MATLAB Compiler SDK 产品编译的不支持函数的信息: https://www.mathworks.com/help/compiler/unsupported-functions.html
下面的这一页还展示了与 MATLAB Compiler 与各个工具箱的兼容性: https://www.mathworks.com/products/compiler/supported/compiler_support.html