MATLAB App Designer生成独立GUI(可执行exe)并添加依赖项
写在前面
近期,由于朋友需求以及科研任务要求,我研究了一下MATLAB GUI设计,写了两个小程序。一个是读取excel部门名单生成excel排班表的排班生成器,另一个是用于机器人编队中的控制和优化算法仿真软件。
程序在MATLAB上跑通很容易,麻烦的是如何将MATLAB GUI程序编译成独立可执行的程序?如何将编译好的独立可执行程序发布在没有安装MATLAB的电脑上?这篇文章讲一下生成exe的经验。
生成步骤
生成exe的过程下面将一步步实现:
设置编译器
要保证电脑中有C/C++编译器,MATLAB一般有自带的gcc,但是在Windows系统下建议使用visual studio,我电脑很早装过vs 2013,就直接选它了。MATLAB中也需要有MATLAB Compiler工具箱,否则无法编译。
设置方法,使用mbuid -setup
,选择想要的,一直y即可。
编写GUI
我个人GUI的设计全部采用MATLAB自带的App Designer。这是MATLAB 2018b开始有的功能,使用方法已经很人性化了,桥总用过都说好。个人觉得甚至比MATLAB编辑器还好用,稍有GUI经验的人可以轻松上手,这里不再细讲。如果是老版本,也有GUI设计器,这时生成的是m文件,而不是mlapp文件。
生成exe
首先,在App Designer中选择“共享->独立桌面app”,进入Application Compiler。
随意设置“Application Information”和“additional installer options”,设置程序名字和图标,写上程序简介,设置默认安装位置,这些信息会在程序安装时出现。注意,splash screen会在程序的每一次启动时出现,记得选个炫酷的图片。
然后,“Additional runtime settings”记得两项全勾上(或者全不选)。debug这档子事,懂的人都懂,大神可忽略。
最后也是最关键的,添加依赖项。 在“Files required for your application to run”中,添加依赖的m文件和路径。打包器会自动将相关路径下的所有文件(或选中m文件)添加进exe安装目录,相关依赖文件也会自动识别并添加,非常方便。
完事之后,会生成3个文件夹,一个是正式安装包,另两个是可执行程序(相当于release和debug)。遗憾的是,处于代码保护的考虑,正式安装包和release程序将依赖的m文件直接嵌入exe,而非复制到安装目录,无法实时改脚本。
常踩的坑
-
进入Application Compiler之后,记得把工程另存一下。如果对打包生成路径有要求,一定注意先另存为打包工程到期望位置,在进行其他选项设置,否则默认在mlapp文件目录下生成resource等文件夹。
-
所有m文件和mlapp文件不能出现添加路径和编辑器相关命令,如
addpath
、mkdir
、edit
等,如果你非要用,就等着感受程序既不运行也不报错的绝望吧。但是命令行命令是可以的,如cd
,也就是说相对路径可以间接利用。 -
如果你的matlab有
startup.m
文件,使用isdeployed
命令移除所有addpath
命令,如下所示,同时上述将移除的路径(或m文件)在“Files required for your application to run”选项中添加。
if ~isdeployed
addpath('your matlab path');
end