我的客户端有一个网络没有用来执行我的Matlab "app" / "solution"(这些语言似乎正在改变这些天) . 他们实际上不会拥有 mcc
许可证,因此编译将在我的家庭组织的网络上完成 .
问题是,当编译的可执行文件运行时,似乎没有一种明显的方法可以强制它使用Matlab编译器运行时(MCR) . 如果目标系统上有Matlab许可证,它也可以使用它 . 但是,编译的全部目的是避免在客户端网络上使用少量许可证,以便在需要时许可证可用于m文件开发工作 . 所以关于这种情况的独特特征似乎是 target environment will eventually have both Matlab licenses and MCR, as well as the requirement that compiled executables use only the MCR rather than the Matlab licenses .
Mathworks正在研究这个问题,但寻找解决方案的前景尚不清楚 . 我希望它赢得't involve manual rejigging login scripts to customize environment PATH variables, as that will break whenever login scripts are updated. I' m希望在顶级m文件或 mcc
开关中像pragma一样的语句的解决方案 . 然而,在仔细阅读 mcc
文档时,除了 -Y license.lic
之外,没有任何开关本身可能是候选者,并且不清楚如何使用它 .
关于客户,我面临的另一个限制是我不想用反复试验纠缠他们(这不是他们的工作) . 由于没有有效的方式将电子内容传达给他们,所以这很复杂,因此快速,迭代的试验和错误就出来了 . 同样,他们的目标环境(使用Matlab许可证)尚不存在,尽管实现目标的过程正在进行中 . 这有点像鸡蛋问题;他们基于我们可以找到挑战解决方案的假设来获得Matlab,但是当目标环境尚不存在时,通过调查解决方案很难预先解决这个问题 .
在我的家庭组织的系统中,我也面临着我无权安装MCR的限制 . 因此,我不能进行反复试验以确定忽略Matlab许可证存在的咒语或配方并强制使用MCR . 并非我有时间这样做,因为这是实现这一目标的一种非常低效的方式 .
由于存在许多间接挑战,因此试错法不是可行的方法,我希望有一种固定方法可以强制使用MCR而不是任何可能存在的Matlab许可证 . 我正在使用R2015b .
2 回答
我正在使用Matlab 2015b处理OS X / Linux的这种确切部署情况 . 编译基于Unix的操作系统的应用程序时,编译器会创建一个在启动时执行的shell脚本 . 我的解决方案是修改此脚本以检查是否存在运行时库 . 例如,在OS X(macOS)上:
TMW的回应: