我已经创建了一个运行良好的部署项目,现在我想将其添加到源控制存储库以供其他人使用。
我面临的主要问题是.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
文件,但我无法找到如何做到这一点。这种情况有解决方案吗?
答案 0 :(得分:4)
我们遇到了与Matlab Builder JA相同的事情。不仅路径绝对,Matlab还添加了它在路径上找到的其他工具箱,这很烦人,因为构建机器没有很多许可证。
所以我们做的是:
我们的修订控件允许您在没有明确签出的情况下修改文件,因此使用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创建一个独立的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。