主要内容

使用rtwmakecfg。m API来定制生成的makefile

请注意

自定义生成makefile S-functions, MathWorks®推荐使用makecfg的方法,而不是rtwmakecfg函数。有关更多信息,请参见使用makecfg S-Functions定制生成的makefile

工具链的方法和模板makefile构建方法生成makefile让你添加以下条目:

  • 源文件夹

  • 包括文件夹

  • 库名称

  • 模块对象

关于rtwmakecfg函数的

使用一个rtwmakecfg功能,你将这些信息添加到makefile S-functions在构建操作。的rtwmakecfg函数是非常有用的在指定源和库添加到构建一个模型,该模型包含一个或多个功能块。

将有关的信息添加到一个makefile的功能:

  1. 创建MATLAB®语言rtwmakecfg功能rtwmakecfg.m文件。代码生成器将这个文件与你的s函数基于文件夹的位置。创建rtwmakecfg函数描述的要求rtwmakecfg函数,它返回的数据。

  2. 如果您使用的是模板makefile的方法,修改你的目标,这样它的TMF支持宏扩展的信息金宝apprtwmakecfg函数返回。修改模板rtwmakecfg Makefile描述所需的修改。如果您正在使用工具链的方法,使用rtwmakecfg函数返回的信息生成makefile;不需要进一步配置。

TLC后阶段的构建过程,生成makefile时,代码生成器搜索rtwmakecfg.m文件的文件夹包含s函数墨西哥人文件。如果找到该文件,构建过程调用rtwmakecfg函数。

创建rtwmakecfg函数

创建rtwmakecfg.m文件包含rtwmakecfg函数在同一文件夹功能组件(MEX-file与平台相关的扩展,如mexext在微软®窗户®系统)。函数必须返回一个结构数组,其中包含这些字段。

描述
makeInfo.includePath 指定额外的单元阵列包括文件夹名称,组织为一个行向量。构建过程扩展文件夹名称中包括指令生成的makefile。
makeInfo.sourcePath 单元阵列,用于指定额外的源文件夹名称,组织为一个行向量。包括文件的文件夹名称进入功能模块字段或功能块参数对话框SFunctionModules参数块如果他们不是在同一文件夹功能。构建过程扩展文件夹名称中制定规则生成的makefile。
makeInfo.sources 一个单元阵列,用于指定额外的源文件的名字(C或c++),组织为一个行向量。不包括s函数的名称或文件进了吗功能模块字段或功能块参数对话框SFunctionModules块的参数。构建过程扩展文件名包含源文件到使变量。仅指定文件名(扩展)。指定的路径信息路径中字段。
makeInfo.linkLibsObjs 指定额外的单元阵列,对象或库文件的完全限定路径生成的代码的链接。构建过程不编译指定对象和库。然而,它包括连接时最终的可执行文件。这个包含可用于合并库,您不希望构建过程重新编译或源文件是不可用的。您还可以使用此元素将源文件从其他语言C和c++。这种集成是可能的如果你首先创建一个C兼容的对象文件或库以外的构建过程。
makeInfo.precompile 一个布尔标志来指示库中指定rtwmakecfg.m文件存在于指定的位置(预编译= = 1),或者如果您必须创建图书馆在构建过程中建立文件夹(预编译= = 0)。
makeInfo.library 一个结构数组,指定额外的运行时库和模块对象,组织为一个行向量。构建过程扩展了信息在生成makefile规则。为图书馆字段的列表,请参见下表。

makeInfo.library字段由以下元素组成。

元素 描述
makeInfo.library (n) . name 一个字符数组,指定的库的名称(没有一个扩展)。
makeInfo.library .Location (n) 一个字符数组,指定文件夹的图书馆坐落在预编译。有关更多信息,请参见的描述makeInfo.precompile在前面的桌子上。一个目标可以使用TargetPreCompLibLocation参数覆盖这个值。看到指定的位置预编译库
makeInfo.library .Modules (n) 细胞数组指定C或c++源文件基地名称(没有一个扩展)组成图书馆。不包括文件扩展名。makefile附加对象扩展。

请注意

makeInfo.library字段必须完全指定每个库和如何构建它。模块的列表makeInfo.library .Modules (n)元素不能是空的。指定一个链接库,使用makeInfo.linkLibsObjs字段。

例子:

disp([从文件夹:运行rtwmakecfg, pwd));makeInfo.includePath= { fullfile(pwd, 'somedir2') }; makeInfo.sourcePath = {fullfile(pwd, 'somedir2'), fullfile(pwd, 'somedir3')}; makeInfo.sources = { 'src1.c', 'src2.cpp'}; makeInfo.linkLibsObjs = { fullfile(pwd, 'somedir3', 'src3.object'),... fullfile(pwd, 'somedir4', 'mylib.library')}; makeInfo.precompile = 1; makeInfo.library(1).Name = 'myprecompiledlib'; makeInfo.library(1).Location = fullfile(pwd,'somdir2','lib'); makeInfo.library(1).Modules = {'srcfile1' 'srcfile2' 'srcfile3' };

请注意

如果路径中指定rtwmakecfg.mAPI包含空间,构建过程并不将路径转换为其是非空间等价的。如果你打算构建环境支持不支持空格的路径,请参考金宝app构建过程支持文件夹的名字金宝app

修改模板rtwmakecfg Makefile

扩大的信息rtwmakecfg函数生成、修改以下部分TMF的目标:

  • 包括路径

  • C标志和/或附加的库

  • 规则

这些TMF代码示例可能不适用于你的效用。更多的例子,请参阅GRT或ERT tmf位于matlabroot/工具箱/编码器/编译/ tmf

文件夹的名字添加到Makefile包括路径

以下TMF将文件夹名称添加到代码范例包括路径生成的makefile中:

ADD_INCLUDES = \ | > START_EXPAND_INCLUDES < | - | > EXPAND_DIR_NAME < | \ | > END_EXPAND_INCLUDES < |

此外,ADD_INCLUDES必须添加到宏包括线。

包括=我。我. .(ADD_INCLUDES) (USER_INCLUDES)美元

库的名称添加到Makefile

以下TMF添加代码范例库名称生成的makefile。

填词= | > START_PRECOMP_LIBRARIES < |填词+ = | > EXPAND_LIBRARY_NAME < |。| > END_PRECOMP_LIBRARIES < | | > START_EXPAND_LIBRARIES < |填词+ = | > EXPAND_LIBRARY_NAME < |。| > END_EXPAND_LIBRARIES < |

有关更多信息,请参见在建立控制库位置和命名

规则添加到Makefile

TMF代码示例添加规则生成的makefile。

| > START_EXPAND_RULES < | $ (BLD) / %。o: | > EXPAND_DIR_NAME < | / %。(SRC)加元/美元rtw_proj MAKEFILE。tmw @ $(空白)@echo # # # " | > EXPAND_DIR_NAME < | \ $ *。c”(CC) (CFLAGS)美元(APP_CFLAGS) - o (BLD)美元(DIRCHAR) *美元。o \ | > EXPAND_DIR_NAME < | (DIRCHAR) *美元。c > (BLD)美元(DIRCHAR) $ *。lst | > END_EXPAND_RULES < | | > START_EXPAND_LIBRARIES < | MODULES_ | > EXPAND_LIBRARY_NAME < | = \ | > START_EXPAND_MODULES < | | > EXPAND_MODULE_NAME < |。o \ | > END_EXPAND_MODULES < | | > EXPAND_LIBRARY_NAME < |。答:美元rtw_proj MAKEFILE。tmw $ (MODULES_ | > EXPAND_LIBRARY_NAME < |: % . o = $ (BLD) / % . o) @ $(空白)@echo创建$ @ $ # # # (AR) - r $ @ $ (MODULES_ | > EXPAND_LIBRARY_NAME < |: % . o = $ (BLD) / % . o) | > END_EXPAND_LIBRARIES < | | > START_PRECOMP_LIBRARIES < | MODULES_ | > EXPAND_LIBRARY_NAME < | = \ | > START_EXPAND_MODULES < | | > EXPAND_MODULE_NAME < |。o \ | > END_EXPAND_MODULES < | | > EXPAND_LIBRARY_NAME < |。答:美元rtw_proj MAKEFILE。tmw $ (MODULES_ | > EXPAND_LIBRARY_NAME < |: % . o = $ (BLD) / % . o) @ $(空白)@echo创建$ @ $ # # # (AR) - r $ @ $ (MODULES_ | > EXPAND_LIBRARY_NAME < |: % . o = $ (BLD) / % . o) | > END_PRECOMP_LIBRARIES < |