在独立的Matlab可执行文件中嵌入全局变量



我正在使用mcc将我的Matlab函数编译为适用于我的目标平台的独立可执行文件。我希望在运行可执行文件时,能够引用在构建时写入可执行文件的全局变量。

例如

  1. 在构建时,我提取存储库的git提交哈希commitHash

  2. commitHash以某种方式成为我的可执行中的全局变量

  3. 我的可执行文件(一个文件(的每个输出都用commitHash标记

这里的挑战是提交哈希只有在构建时才知道,并且独立的可执行文件在运行时将不再在存储库中。

谢谢!

您可以编写一个MATLAB函数,该函数使用system调用git程序并查询提交ID,然后创建一个简单的M文件函数(commitHash.m(来返回该值,它只需将M文件写入磁盘。

这个生成的函数用于您想要输出提交ID的代码中。mcc程序将在独立可执行文件的捆绑包中包含这个函数。

您可以编写一个构建脚本,它只需调用生成commitHash.mM文件的函数,然后调用mcc。这样可以确保每次构建捆绑包时都会更新commitHash.m文件。


使用提交ID生成的M文件如下所示:

function id = commitHash
id = '0123456789abcdef';

这是在MATLAB中创建常量的标准方法。在你的程序中,你可以这样使用它:

fprintf('My program, commit ID: %sn', commitHash);

这样做的好处是,不将ID嵌入实际程序中,这样就不会修改存储库中的代码——提交更改会更改提交ID,这会很奇怪。

commitHash.m文件添加到.gitignore文件中,以防止其被提交。

相关内容

最新更新