Matlab 部署:将文件添加到源代码管理?

问题描述 投票:0回答:4

我创建了一个运行良好的部署项目,现在我想将其添加到源代码控制存储库以供其他人使用。
我面临的主要问题是

.prj
创建的
deploytool
文件包含绝对路径,该路径在其他计算机上不起作用。到目前为止,我已经尝试过以下方法:

  • 仅使用
    mcc
    而不使用
    deploytool
    创建独立的 exe。这很好用,但我可以找到一种方法来创建包含所有内容的最终
    _pkg.exe
    。 mcc 似乎无法创建此文件,并且似乎没有任何其他工具可以创建此文件。真的是这样吗?
  • 编辑
    .prj
    文件以包含相对路径而不是绝对路径。这只能部分起作用,因为
    .prj
    文件包含一个名为
    MATLABPath
    的部分,该部分始终会替换为 matlab 的当前
    setpath
    。任何使用此文件的人都必须检查它,因为它在使用时被更改。
  • 找到生成
    .prj
    文件的方法。 mcc 文档说:
    Project files created using either mcc or deploytool are eligible to use this option.
    建议有一种方法可以使用
    .prj
    创建
    mcc
    文件,但我无法找到如何做到这一点。

这种情况有解决办法吗?

matlab matlab-deployment mcc matlab-compiler
4个回答
4
投票

我们在使用 Matlab Builder JA 时遇到了同样的事情。不仅路径是绝对路径,Matlab 还添加了它在路径上找到的其他工具箱,这很烦人,因为构建机器没有很多工具箱的许可证。

所以我们要做的是:

  • 手动编辑 prj 文件以删除绝对路径
  • 将其签入源代码管理并使用 mcc 进行构建
  • 在部署工具触及 prj 文件后,切勿签入该文件(在编辑器中手动进行所有更改)

我们的修订控制允许您修改文件而无需显式签出,因此使用deploytool不是问题。但你为什么要这么做?

不确定最终的打包程序会做什么,但如果它只是将 MCR 与编译后的二进制文件捆绑在一起,我只会编写一个替代品。


1
投票

我个人使用 Visual Studio 2005 项目来维护我的部署项目,然后使用构建命令步骤将 VCPROJ 即时转换为 PRJ http://younsi.blogspot.com/2011/11/matlab-relative-path-issue-in-prj.html


0
投票

参加聚会有点晚了,但也许仍然有用。我们添加了一个初始化脚本,可以为每个人在本地创建项目:

path = pwd;
projectName = 'OurProject';
proj = matlab.project.createProject("Folder", path, "Name", projectName);
disp(proj.name);

addFile(proj, 'startup.m');
addStartupFile(proj, 'startup.m');
addFile(proj, 'shutdown.m');
addShutdownFile(proj, 'shutdown.m');

startup;

还将

*.prj
resources/
添加到您的 .gitignore。

然后每个新用户只需在克隆存储库后执行此脚本一次,然后在打开 matlab 后双击 OurProject.prj 即可。


-2
投票

这是 mcc 选项文档

我发现最有用的是使用 mcc 创建一个独立的 exe:

  mcc -C -m <function.m> -a <fig> -a <dll> -a <etc> -d <outputPath>

-C 选项告诉

mcc
将 ctf 文件(这是所有已编译的 MATLAB 内容的存档)生成为单独的文件。 我在某些目标计算机上使用单个 exe 并编译了所有内容时遇到了麻烦。

-m 选项告诉

mcc
制作一个 exe。

-a 选项告诉

mcc
将指定的文件包含在包中。 例如,如果您的脚本使用两个 Fig 文件和一个数据文件,则每个文件都需要一个 -a 以确保它们放入输出包中。


告诉 mcc 使用项目文件(我自己从未这样做过):

 mcc -F <projectfile>

此外,如果您在 Windows 上使用 R2009a,则存在一个 已知错误,需要进行一些清单操作

© www.soinside.com 2019 - 2024. All rights reserved.