我正在使用Matlab Coder生成C代码,用作更大的C项目的子系统.代码生成命令的第一次try 是

codegen -config cfg -o ...

其中cfgcoder.CodeConfig对象的名称,...表示后面是函数列表及其参数规范.此命令的问题在于它不会自动生成依赖项tmwtypes.h.我假设如果使用Matlab来编译代码,这不是问题,但我将生成的文件复制到主项目并直接使用gcc构建,所以我需要包含该依赖项.

事实证明,package选项可以有所帮助.如果我产生与

codegen -config cfg -package pkg -o ...

然后生成包含所生成的代码的压缩文件pkg.zip,其中包括所包括的依赖性tmwtypes.h.我可以在主项目中解压并编译它;它有效!显然,packNGo函数可以用于获得类似的结果;事实上,codegen似乎很可能使用packNGo来实现package选项.

但这似乎太愚蠢了!我不应该仅仅为了获取正确的依赖项而生成压缩文件.一定有更好的方法,对吧?那么生成代码并确保包含tmwtypes.h的正确方法是什么?我想我可以将其复制到文件夹中,作为脚本的一部分,但默认位置tmwtypes.h在不同的机器上会有所不同,所以这有自己的一系列问题.Matlab显然有足够的能力检测和包括依赖性,因为在使用package选项时会包括它.

推荐答案

根据this,我似乎可以通过使用matlabroot命令获得到tmwtypes.h的平台相关路径:

matlabroot + "/extern/include/tmwtypes.h"

我可以使用它将tmwtypes.h个复制到主项目中,作为代码生成和编译脚本的一部分.

如果有的话,我仍然希望了解有关更好解决方案的信息.

C++相关问答推荐

如何启用ss(另一个调查套接字的实用程序)来查看Linux主机上加入的多播组IP地址?

为什么可以通过指向常量int的指针间接地改变整数的值?

堆栈在作用域阻塞后会被释放吗?

在列表中插入Int指针(C)

GCC不顾-fno-Builtin-SINCOS旗帜向SINCOS发出呼唤

对于C中给定数组中的每个查询,如何正确编码以输出给定索引范围(1到N)中所有数字的总和?

CC2538裸机项目编译但不起作用

从uint8_t*转换为char*可接受

CGO:如何防止在使用CGO在包中包含C头文件时出现多个定义...&q;错误?

如何用c语言修改shadow文件hash部分(编程)?

S在本文中的价值观到底出了什么问题?

预处理器宏扩展(ISO/IEC 9899:1999(E)§;6.10.3.5示例3)

Zlib:解压缩大文件导致";无效代码长度设置";错误

运行时错误:在索引数组时加载类型为';char';`的空指针

为什么WcrTomb只支持ASCII?

在C程序中使用Beaglebone Black UART的问题

C:Assignment中的链表赋值从指针目标类型中丢弃‘const’限定符

在NASM中链接Linux共享库时出错-';将R_ X86_64_;foo';

函数的typedef是标准 C 语法吗?它与函数指针的typedef有何不同?

是否可以在多字 C 类型中的任何位置混合存储和类型限定符?