我正在使用 Matlab Coder 生成 C 代码,以用作大型 C 项目的子系统。代码生成命令的第一次尝试是
codegen -config cfg -o ...
其中
cfg
是 coder.CodeConfig
对象的名称,...
表示后面的函数列表及其参数规范。该命令的问题在于它不会自动生成依赖项tmwtypes.h
。我认为如果使用 Matlab 编译代码,这不是问题,但我将生成的文件复制到主项目并直接使用 gcc
进行构建,因此我需要包含该依赖项。
事实证明
package
选项可以提供帮助。如果我用生成
codegen -config cfg -package pkg -o ...
然后生成一个 zip 文件
pkg.zip
,其中包含生成的代码以及依赖项 tmwtypes.h
。我可以将其解压到主项目中并编译;有用!显然,使用 packNGo
函数可以得到类似的结果;事实上,codegen
似乎很可能使用 packNGo
来实现 package
选项。
但这看起来很愚蠢!我不需要生成 zip 文件只是为了获得正确的依赖项。一定有更好的方法,对吧?那么生成代码并确保包含
tmwtypes.h
的正确方法是什么?我想我可以将其作为脚本的一部分复制到文件夹中,但是 tmwtypes.h
的默认位置在不同的计算机上会有所不同,因此有其自己的一系列问题。 Matlab 显然有足够的能力来检测和包含依赖性,因为它是在使用 package
选项时包含的。
根据this,我似乎可以使用
tmwtypes.h
命令获取到
matlabroot
的平台相关路径:
matlabroot + "/extern/include/tmwtypes.h"
我可以使用它将
tmwtypes.h
复制到主项目中,作为代码生成和编译脚本的一部分。
如果有的话,我仍然希望获得有关更好解决方案的信息。