使用 makecfg 为 S-Function 自定义生成的联编文件
使用工具链或模板联编文件方法编译代码时,您可以为 S-Function 自定义生成的联编文件。通过自定义,您可以为 S-Function 编译过程指定附加项:
源文件和文件夹
包含文件和文件夹
库名称
预处理器宏定义
编译器标志
链接对象
要自定义生成的联编文件,请执行以下操作:
在包含 S-Function 组件的 S-Function MEX 文件所在的文件夹中,创建一个
makecfg.m或specificSFunction_makecfg.m文件。如果您创建一个makecfg.m文件,它对于模型使用的 S-Function MEX 文件所在的文件夹中的任何 S-Function 都有效。specificSFunction_makecfg.m文件仅在模型使用对应的 S-Function 时才有效。在您创建的文件中,使用
RTW.BuildInfo函数为 S-Function 编译过程指定附加项。例如,您可以使用:addCompileFlags来指定编译器选项。addDefines来指定预处理器宏定义。
保存创建的文件。
在代码生成后,在 S-Function MEX 文件所在的文件夹中,代码生成器会搜索 makecfg.m 和 specificSFunction_makecfg.m 文件。如果文件存在,代码生成器会使用这些文件来自定义生成的联编文件 model.mk。
例如,假设在编译过程的 TLC 阶段后有一个文件夹,该文件夹包含 signalConvert.mexa64(S-Function 二进制文件)和 signalConvert.tlc(内联 S-Function 实现)。该 S-Function 需要额外的源代码文件 filterV1.c,该文件位于 anotherFolder 中。您可以创建一个文件 signalConvert_makecfg.m,它使用 RTW.BuildInfo 函数为编译过程指定 filterV1.c。
function signalConvert_makecfg(objBuildInfo)
absolutePath = fullfile('$(START_DIR)', 'anotherFolder');
addSourceFiles(objBuildInfo, 'filterV1.c', absolutePath);