Matlab部署:将文件添加到源代码控制?

时间:2009-11-24 14:27:59

标签: matlab matlab-deployment mcc matlab-compiler

我已经创建了一个运行良好的部署项目,现在我想将其添加到源控制存储库以供其他人使用。
我面临的主要问题是.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文件,但我无法找到如何做到这一点。

这种情况有解决方案吗?

3 个答案:

答案 0 :(得分:4)

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

所以我们做的是:

  • 手动编辑prj文件以摆脱绝对路径
  • 将其检入源代码管理并使用mcc构建
  • 在deploytool触及prj文件后永远不要检查prj文件(在编辑器中手动完成所有更改)

我们的修订控件允许您在没有明确签出的情况下修改文件,因此使用deploytool不是问题。但你为什么要这么做?

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

答案 1 :(得分:1)

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

答案 2 :(得分:-2)

这是mcc option documentation

我发现最有用的是使用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在包中包含指定的文件。例如,如果您的脚本使用两个图形文件和一个数据文件,则每个文件需要一个-a,以确保它们被放入输出包中。


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

 mcc -F <projectfile>

此外,如果您在Windows上使用R2009a,则会有known bug that requires some manifest manipulation