10

我创建了一个运行良好的部署项目,现在我想将它添加到源代码控制存储库供其他人使用。
我面临的主要问题是创建的.prj文件deploytool包含在其他计算机上不起作用的绝对路径。到目前为止,我已经尝试了以下方法:

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

这种情况有解决办法吗?

4

3 回答 3

4

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

所以我们要做的是:

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

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

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

于 2010-11-19T10:24:59.483 回答
1

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

于 2011-11-03T21:00:53.447 回答
-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,则存在一个需要一些清单操作的已知错误

于 2009-11-24T20:06:14.657 回答