自定义模板makefile
配置或定制一个模板makefile (TMF),您应该熟悉如何使
命令的工作方式,以及它如何处理makefile。你也应该知道makefile构建规则。关于这些主题的信息,请参考附带的文档让你使用实用程序。
模板makefile和令牌
tmf的语句是由包含令牌。并创建一个makefile构建过程膨胀令牌,
。tmf旨在为具体的特定的平台上的编译器生成makefile。生成的模型
楼上
文件是根据从模型生成的代码编译和链接,使用命令特定于您的开发系统。模型
楼上
创建model.mk
模板Makefile令牌
的make_rtw
命令(或另一个命令提供一些目标)将生成的过程
。的模型
楼上make_rtw
命令处理TMF上指定的代码生成面板的配置参数对话框。make_rtw
复制TMF、逐行、扩大每个令牌。模板Makefile make_rtw标记扩展列出了令牌和扩张。
使用这些标记扩展makefile在几个方面:
在makefile控制条件的行为。条件是用来控制源文件列表、库名称,目标建立,和其他与构建相关的信息。
提供的宏定义编译文件,例如,
-DINTEGER_CODE = 1
。
模板Makefile make_rtw标记扩展
令牌 | 扩张 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
通用 | |||||||||||
|
链接器标记自动添加块。 |
||||||||||
|
交替MATLAB的完整路径名®可执行;价值是不同的价值 |
||||||||||
|
MATLAB安装备用完整路径名;价值是不同的价值 |
||||||||||
|
选项传递给 |
||||||||||
|
真正的(1)单输出/更新功能被选中,否则假(0)。用于宏定义 |
||||||||||
|
电脑类型。看到MATLAB |
||||||||||
|
预编译的库文件的位置。的 |
||||||||||
|
库名称。有关示例,请参见在建立控制库位置和命名和修改模板rtwmakecfg Makefile。 |
||||||||||
|
图书馆后缀。的 |
||||||||||
|
真正的(1),使一代的外部模式支持代码,否则假(0)。金宝app |
||||||||||
|
指数传输机制(例如, |
||||||||||
|
真正的(1)如果选择静态内存分配外部模式。假(0)如果选择动态内存分配。 |
||||||||||
|
静态内存分配缓冲区的大小(如果有的话)外部模式。 |
||||||||||
|
真正的(1)创建银块被选中,否则假(0)。用于控制makefile构建的目标。 | ||||||||||
|
真正的(1)终止功能要求被选中,否则假(0)。用于宏定义 |
||||||||||
|
真正的(1)金宝app支持浮点数不是选择,否则假(0)。 |
||||||||||
|
|
||||||||||
|
真正的(1)MAT-file日志被选中,否则假(0)。MAT_FILE 是一个必需的宏定义在编译源代码时也用于构建过程包括日志代码。 |
||||||||||
|
MATLAB可执行文件的位置。 |
||||||||||
|
MATLAB是安装位置。 |
||||||||||
|
要么 |
||||||||||
|
MEX-file扩展。看到MATLAB |
||||||||||
|
额外的生成源模块。例如,您可以一个大模型分割成两个文件, |
||||||||||
|
对象文件名( |
||||||||||
|
仿真软件的名称金宝app®框图目前正在建造。 |
||||||||||
|
真正的(1)如果解算器模式是多任务处理,否则假(0)。 |
||||||||||
|
数量的连续状态。 |
||||||||||
|
在模型中样本数量乘以。 |
||||||||||
|
真正的(1)使便携式文字大小被选中,否则假(0)。 | ||||||||||
|
MATLAB的发布版本。 |
||||||||||
|
noninlined列表功能。 |
||||||||||
|
可用于连接函数库的列表。 |
||||||||||
|
对象( |
||||||||||
|
解算器源文件名,例如, |
||||||||||
|
解算器对象( |
||||||||||
|
|
||||||||||
|
指定编译器的命令行选项。在makefile
|
||||||||||
|
真的(1)如果连续任务和第一个离散的采样率的任务是相等的,否则假(0)。 |
||||||||||
功能和构建信息支持金宝app 请注意令牌的例子在这一节中,看到的修改模板rtwmakecfg Makefile。 |
|||||||||||
|
文件夹名称列表添加到包含路径。此外,ADD_INCLUDES 必须添加到宏包括 线。 |
||||||||||
|
库名称的列表。 | ||||||||||
|
内库模块名称| > START_EXPAND_LIBRARIES < | 和| > START_PRECOMP_LIBRARIES < | 库列表。 |
||||||||||
|
Makefile规则。 | ||||||||||
|
预编译库名称的列表。 | ||||||||||
模型参考支持金宝app 请注意令牌的例子在这一节中,看到的在TMF提供模型参考支持金宝app。 |
|||||||||||
|
针对并行构建,目前的工作文件夹(松材线虫病 )构建开始。 |
||||||||||
|
库文件的名称为当前生成模型。 | ||||||||||
|
列表的模型引用的模型。 | ||||||||||
|
的列表引用模型库的模型链接。 | ||||||||||
|
顶级模特的响应文件名称链接。这个令牌是有效的只有支持链接器响应文件的构建环境。金宝app其使用的一个示例,请参阅 。 |
||||||||||
|
类型的目标。可能的值是
|
||||||||||
|
相对路径,从生成makefile的位置,MATLAB工作文件夹。 | ||||||||||
|
目前的工作文件夹(松材线虫病 )构建开始。这个令牌需要并行构建。 |
||||||||||
|
引用的列表,包括模型的路径模型。 | ||||||||||
|
文件夹共享的库文件建立源文件。 | ||||||||||
|
从共享源文件,库文件建立包括库文件夹的路径。 | ||||||||||
|
共享源文件规范,包括共享工具文件夹的路径。 | ||||||||||
|
源文件文件夹共享。 |
这些令牌被替换的参数值扩展构建过程。例如,如果源模型包含块有两个不同的样本,TMF语句
NUMST = | > NUMST < |
扩大到下面
。模型
楼上
NUMST = 2
除了上面的,make_rtw
扩展标记从其他来源:
有针对性的令牌中定义的目标选项配置参数对话框
结构
rtwoptions
部分系统的目标文件。结构rtwoptions
结构数组包含字段makevariable
是扩大。
下面的例子是提取
。开始的部分matlabroot
grt / rtw / c / /grt.tlcBEGIN_RTW_OPTIONS
包含MATLAB代码设置rtwoptions
。下面的指令引起的| > EXT_MODE < |
扩展到令牌1
(对)或0
(关闭),这取决于你如何设置外部模式选项。
rtwoptions (2)。makevariable='EXT_MODE'
调用make实用工具
使命令
在创建
从你TMF,构建过程调用模型
楼上使
命令。调用使
这个命令,构建过程问题。
makecommand- f模型楼上
定义的是makecommand
MAKECMD
在你的目标的TMF宏结构模板的Makefile)。您可以指定附加选项使
在使命令场的代码生成窗格。(见章节指定一个使命令和模板makefile和做出选择。)
例如,指定OPT_OPTS = - 02
在使命令场的原因make_rtw
生成以下使
命令。
makecommand- f模型楼上OPT_OPTS = - 02
评论的顶部TMF指定可用使
命令选项。如果这些选项不为您提供足够的灵活性,您可以配置自己的TMF。
使实用程序版本
使实用程序允许您控制的几乎每一个方面构建实时程序。有几个不同版本的使
可用。代码生成器提供了自由软件基金会的GNU®使
对于UNIX®(1]在特定于平台的子文件夹和PC平台
matlabroot/ bin
可以使用其他版本的使
代码生成器,尽管GNU做出建议。兼容的代码生成器,验证您的版本的使
金宝app支持下面的命令格式。
makecommand- f模型楼上
结构模板的Makefile
TMF有多个部分,包括以下:
文摘
——描述了makefile的目标。这是一个代表锐信tmf的抽象
(开放):matlabroot
grt / rtw / c /#文件:grt_lcc。tmf # #文摘:#模板makefile构建一个基于pc的独立的通用实时仿真软件模型的使用#版本编译器生成C代码和LCC # 2.4版本。金宝app# #这个makefile试图符合指南# IEEE Std 1003.2中指定-1992 (POSIX)标准。它是设计用于与GNU #让(gmake)位于matlabroot / bin / win32。# #注意,这个模板是由构建#程序自动定制创建“<模型>。可“# #以下定义可以用来修改的行为#构建:# OPT_OPTS -优化选项。默认是没有的。启用#调试指定OPT_OPTS = g4。#选择-用户特定的编译选项。# USER_SRCS -额外的用户来源,比如# S-functions所需的文件。 # USER_INCLUDES - Additional include paths # (i.e. USER_INCLUDES="-Iwhere-ever -Iwhere-ever2") # (For Lcc, have a '/'as file seperator before the # file name instead of a '\' . # i.e., d:\work\proj1/myfile.c - reqd for 'gmake') # # This template makefile is designed to be used with a system target # file that contains 'rtwgensettings.BuildDirSuffix'. See grt.tlc.
宏阅读make_rtw
部分,定义了宏,告诉make_rtw
如何处理TMF。这是一个代表宏阅读make_rtw
锐信tmf的部分
(开放):matlabroot
grt / rtw / c /# - - -宏阅读make_rtw - - - # #阅读以下宏的构建过程:# # MAKECMD——调用的命令让#效用#主机-平台(例如,PC) #这TMF写#壳-操作系统SHELL命令# #(例如,cmd)平台建设——国旗表明是否# # SYS_TARGET_FILE -调用使从构建过程系统目标文件的名字。MAKECMD = " % MATLAB % \ bin \ win32 \ gmake”主机= PC SHELL = cmd构建grt =是的SYS_TARGET_FILE =。tlc BUILD_SUCCESS = * * *创建COMPILER_TOOL_CHAIN = lcc MAKEFILE_FILESEP = /
本节中的宏可能包括:
MAKECMD
——指定使用的命令来调用实用程序。例如,如果MAKECMD
=mymake
,那么使
命令调用mymake - f
模型
楼上主机
——指定该TMF平台的目标。这可以个人电脑
,UNIX
,
(见MATLABcomputer_name
电脑
命令),或任何
。壳牌
——指定一个操作系统shell命令的平台。对于Windows,这可以cmd
。构建
——指示make_rtw
是否应该调用使
从构建过程。指定是的
或没有
。SYS_TARGET_FILE
——指定系统目标文件的名称或值任何
。这是用于一致性检查make_rtw
验证系统中指定的目标文件目标选择面板的代码生成面板的配置参数对话框。如果您指定任何
与任何系统,您可以使用TMF目标文件。BUILD_SUCCESS
-可选宏观,指明构建成功消息显示使
在电脑上完成。例如,BUILD_SUCCESS = # # #成功的创建
的
BUILD_SUCCESS
宏,如果使用,取代了标准的构建中成功消息绑定代码生成器的tmf分布式目标(GRT等):@echo # # #创建可执行文件(模型). exe
你的TMF必须包括标准构建成功消息,或使用
BUILD_SUCCESS
宏。对使用的一个例子BUILD_SUCCESS
,请参阅
或者上面的代码示例宏列表。matlabroot
grt / rtw / c / /grt_lcc.tmfBUILD_ERROR
-可选宏观,指明构建错误消息显示过程中遇到错误时使
过程。例如,BUILD_ERROR =[错误而构建,modelName]
VERBOSE_BUILD_OFF_TREATMENT = PRINT_OUTPUT_ALWAYS
——可选宏观包括如果你想makefile输出显示不管的设置详细的构建选项代码生成>调试窗格。COMPILER_TOOL_CHAIN
——基于Windows®系统,指定编译器设置文件——位于
(开放)- - -使用方法:matlabroot
/工具箱/ rtw /环球套票低成本航空
选择setup_for_lcc.m
vcx64
选择setup_for_visual_x64.m
默认的
选择setup_for_default.m
对于基于UNIX系统,指定
unix
。其他值标记为未知make_rtw
使用setup_for_default.m
。请注意
不要省略
COMPILER_TOOL_CHAIN
或者把它TMF不明。如果编译器,编译器不是主机指定COMPILER_TOOL_CHAIN =违约
。下载
——一个可选的宏,您可以指定是或否。如果指定为是的(和构建= yes
),然后使
第二次调用下载目标。让- f
模型
楼上下载DOWNLOAD_SUCCESS
——一个可选的宏,您可以使用它来指定下载成功消息当寻找完成下载使用。例如,DOWNLOAD_SUCCESS = # # #下载
DOWNLOAD_ERROR
——一个可选的宏,您可以使用它来指定下载错误信息显示在下载时遇到错误。例如,DOWNLOAD_ERROR =[当下载时发生错误,modelName]
令牌扩大了make_rtw
部分—定义的令牌make_rtw
扩张。这里是一个简短的摘录令牌扩大了make_rtw
锐信tmf的部分
(开放):matlabroot
grt / rtw / c /# - - - - - - - - - - - - - - - - - - - - - - -令牌扩大了make_rtw - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # #以下标记,当用“| >”和“< |”扩大了#构建过程。# # MODEL_NAME -仿真软件框图的名字# MO金宝appDEL_MODULES任何额外的生成源模块# MAKEFILE_NAME - makefile的名字从模板创建makefile <模型>。可# MATLAB_ROOT - MATLAB在哪里安装路径……模型= | > MODEL_NAME < = | |模块> MODEL_MODULES < | MAKEFILE = | > MAKEFILE_NAME < | MATLAB_ROOT = | > MATLAB_ROOT < |…
关于TMF令牌的更多信息,请参阅模板Makefile make_rtw标记扩展。
后续部分随编译器、主机和目标。一些常见的部分包括
模型和参考模型
,外部模式
,工具规格
或工具的定义
,包括路径
,C标志
,附加的库
,源文件
。规则
部分—包含制定规则用于构建一个可执行文件从生成的源代码。构建规则通常是特定于您的版本的。的规则
部分可能是紧随其后的是相关的部分等依赖关系
。
自定义和创建模板makefile
介绍
本节描述的机制建立一个自定义模板makefile (TMF)并把它融入到构建过程。它还讨论修改TMF的技术和MATLAB文件与TMF相关机制。
创建一个自定义TMF之前,你应该阅读文件夹和文件命名约定理解自定义的文件夹结构和MATLAB路径要求目标。
设置一个模板Makefile
定制或者创建一个新的TMF,你应该复制现有的生物或ERT TMF的以下位置:
把复制在同一个文件夹相关的系统目标文件(31)。通常,这是mytarget / mytarget
文件夹内的目标文件夹结构。然后,重命名你的TMF(例如,mytarget.tmf
)和修改它。
允许定位和选择TMF构建过程,您必须提供算法中的信息文件头(见系统目标文件结构)。实现单个目标TMF,指定TMF的标准方法用于构建过程是使用TMF指令算法的文件头。
TMF: mytarget.tmf
使用宏和模式匹配表达式模板Makefile
本节所示,通过一个例子,如何使用宏和file-pattern-matching表达式在TMF生成的命令
文件。模型
楼上
使实用程序处理
makefile和生成一组命令基于依赖规则中定义模型
楼上
。后模型
楼上使
为建立或重建生成的命令集测试
,使
执行它们。
例如,建立一个程序调用测试
,使
必须在目标文件链接。然而,如果目标文件不存在或者过时了,使
必须编译源代码。因此有一个源和目标文件之间的依赖关系。
每个版本的使
稍微不同的特性和规则是如何定义的。例如,考虑一个项目测试
创建两个来源,file1.c
和file2.c
。使用最多的版本使
,依赖规则
测试:file1。o file2.occ-o test file1.o file2.o file1.o: file1.c cc -c file1.c file2.o: file2.c cc -c file2.c
在这个例子中,UNIX(2]环境。在PC环境下的文件扩展名和编译和链接命令是不同的。
在处理第一个规则
测试:file1。o file2.o
使
看到建测试
,它需要建立file1.o
和file2.o
。构建file1.o
,使
流程规则
file1.o: file1.c
如果file1.o
不存在,或者如果file1.o
比file1.c
,使
编译file1.c
。
tmf的格式遵循上面的例子。我们的tmf使用的附加功能使
如宏和file-pattern-matching表达式。在大多数版本的使
,一个宏定义
MACRO_NAME =价值
对宏是由引用$ (MACRO_NAME)
。当使
看到这种形式的表达,它的替代品价值
为$ (MACRO_NAME)
。
您可以使用模式匹配表达式的依赖更一般的规则。例如,使用GNU(3],你可以更换两个“file1.o: file1.c
”和“file2.o: file2.c
“规则与规则
%。o: %。ccc-c $<
请注意,$ <
在前面的例子是一个特定的宏,它相当于依赖文件(即,file1.c
或file2.c
)。因此,使用宏和“%
“模式匹配字符,可以减少到前面的例子
src = file1。c file2。cobj=$(SRCS:.c=.o) test: $(OBJS) cc -o $@ $(OBJS) %.o : %.c cc -c $<
请注意,$ @
宏观上是另一个特定的宏,它相当于当前依赖目标的名称,在这种情况下测试
。
这个示例生成的列表对象(obj
)从源列表中(src
)通过使用文本替换为宏扩展功能。它取代源文件扩展名(例如,。c
与对象文件扩展名()。o
)。这个例子也通用程序的建立规则,测试
使用特殊的“$ @
“宏。
与rtwmakecfg定制生成makefile
tmf提供令牌,让你添加以下条目生成makefile:
源文件夹
包括文件夹
运行时库的名字
运行时模块对象
S-functions可以将这些信息添加到使用一个makefilertwmakecfg.m
文件的功能。这个函数是特别有用的在构建一个模型,其中包含一个或多个功能模块,如设备驱动程序块。
将有关的信息添加到makefile的s函数,
创建函数
rtwmakecfg
在文件rtwmakecfg.m
。代码生成器将这个文件与你的s函数基于文件夹的位置。修改你的目标的TMF这样它支持宏扩展为返回的信息金宝app
rtwmakecfg
功能。
构建过程的TLC阶段后,从TMF生成makefile,搜索一个构建过程rtwmakecfg.m
文件的文件夹,其中包含的功能组件。如果找到该文件,构建过程调用rtwmakecfg
函数。有关更多信息,请参见使用rtwmakecfg。m API来定制生成的makefile。
金宝app支持自定义的连续时间的目标
如果你想定制ERT-based目标支持连续时间,你必须更新模板makefile (TMF金宝app)和静态主程序模块(例如,mytarget_main.c
)你的目标。
模板修改Makefile。添加NCSTATES
令牌后扩张NUMST
令牌扩张,如下:
NUMST = | > NUMST < | NCSTATES = | > NCSTATES < |
此外,添加NCSTATES
到CPP_REQ_DEFINES
宏,如以下示例:
CPP_REQ_DEFINES = -DMODEL = $(模型)-DNUMST = (NUMST) -DNCSTATES =美元(NCSTATES) \ -DMAT_FILE = (MAT_FILE) -DINTEGER_CODE =美元(INTEGER_CODE) \ -DONESTEPFCN = (ONESTEPFCN) -DTERMFCN = (TERMFCN)美元\ -DHAVESTDIO -DMULTI_INSTANCE_CODE = $ (MULTI_INSTANCE_CODE) \
修改主程序模块。主程序模块定义了一个静态的主要功能管理任务调度的支持任务的单一模式,变产量模型。金宝appNUMST
(模型中样本的数量乘以)确定主函数调用多频或单频代码。然而,当一个模型使用连续时间,不要依赖NUMST
直接。
当模型的连续时间和旗帜TID01EQ
是真的,连续时间和离散时间被当作一个最快速度生成的代码。代码与离散速度最快的守卫的一个主要时间步检查。当模型只有两个利率,和TID01EQ
是真的,生成的代码有一个单频调用接口。
支持连金宝app续时间模型,更新静态主模块TID01EQ
考虑,如下所示:
之前
NUMST
引用文件中,添加以下代码:#如果定义(TID01EQ) & & TID01EQ = = 1 & & NCSTATES = = 0 # define DISC_NUMST其他(NUMST - 1) # # define DISC_NUMST NUMST # endif
取代的实例
NUMST
在文件DISC_NUMST
。
模型参考注意事项
看到金宝app支持模型引用有关TMF的重要信息修改您可能需要支持代码生成器模型引用特性。金宝app
请注意
如果您使用的是TMF不变量SHARED_SRC
或MODELREFS
,文件可能已经使用仿真软件的早期版本的软件。金宝app如果你想让你的TMF引用来支持模型,添加变量金宝appSHARED_SRC
或MODELREFS
使文件。
相关的话题
(1]UNIX是一个注册商标的开放组织在美国和其他国家。
(2]UNIX是一个注册商标的开放组织在美国和其他国家。
(3]自由软件基金会的GNU是一个注册商标。