主要内容

coder.make.BuildToolclass

包:coder.make

代表构建工具

描述

使用coder.make.BuildTool和定义一个现有的默认coder.make.BuildTool对象,或创建一个coder.make.BuildTool对象。

使用默认BuildTool对象,使用get和定义的方法ToolchainInfo属性:

  • coder.make.ToolchainInfo.BuildTools

  • coder.make.ToolchainInfo.PostbuildTools

示例显示了得到和定义的方法是:

另一种获得和定义方法是创建新方法。一个例子显示了创建新方法出现在创建一个非默认BuildTool

插图显示了默认的之间的关系BuildTool对象和ToolchainInfo。当你检查虚假目标部分生成的makefile,之间的差别BuildTools,PostbuildTools,PrebuildTools变得更加清晰。

  • prebuild——只运行prebuild工具。

  • 构建——运行prebuild后运行构建工具。的构建生成构建产品

  • postbuild——运行postbuild工具在运行构建。

  • 所有——构建和postbuild prebuild运行。构建过程使用Ctrl + B建造这条规则。

  • 清洁——清理所有输出文件扩展名和导出文件扩展名的所有工具的工具链。

  • 信息——扩展并打印所有宏在makefile中使用。

coder.make.BuildTool类是一个处理类。

创建

h= coder.make.BuildTool (bldtl_name)创建一个coder.make.BuildTool对象并设置它的名字财产。

输入参数

全部展开

构建工具名称,指定为一个特征向量或字符串标量。

数据类型:字符|字符串

属性

全部展开

代表了构建工具命令使用:

  • 一个可选的宏名,如:CC

  • 系统调用(命令),开始构建工具,如:海湾合作委员会

宏名和系统调用生成的makefile中一起出现。例如:CC = gcc

分配一个值,这个属性是可选的。

您可以使用以下方法命令:

属性:

GetAccess
公共
SetAccess
公共

定义了任何工具相关的指令,如- d预处理器定义。分配一个值,这个属性是可选的。

您可以使用以下方法指令:

属性

GetAccess
公共
SetAccess
公共

定义了任何工具相关的文件扩展名。这个值是可选的。

您可以使用以下方法FileExtensions:

属性

GetAccess
公共
SetAccess
公共

定义构建工具的名称。

您可以使用以下方法的名字

属性

GetAccess
公共
SetAccess
公共

定义了任何特定工具的路径。如果命令系统路径,这个值是可选的。

您可以使用以下方法路径:

GetAccess
公共
SetAccess
公共

定义了任何工具相关的输出格式。如果该工具支持所有可用的金宝app格式,这个值是可选的。

默认值是{‘*’},这表明支持所有可用的格式。金宝app

单元阵列数据类型。单元阵列必须的内容coder.make.BuildOutput枚举值,或者‘*’

这个属性没有任何关联的方法。直接赋值金宝appSupportedOutputs。看到addPrebuildToolToToolchainInfo.m例子或addPostbuildToolToToolchainInfo.m的例子。有效的枚举值:

coder.make.BuildOutput.STATIC_LIBRARY 申请预构建工具、构建工具和post-build工具
coder.make.BuildOutput.SHARED_LIBRARY 适用于构建工具和post-build工具;需要嵌入编码器®许可证
coder.make.BuildOutput.EXECUTABLE 适用于构建工具和post-build工具

属性

GetAccess
公共
SetAccess
公共

方法

全部展开

例子

全部折叠

intel_tc.m文件从添加自定义工具链,MATLAB®编码器™构建过程使用以下行来获得一个默认的构建工具,C编译器,从一个ToolchainInfo对象被称为tc,然后设置其属性。

% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % C编译器% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -工具= tc。getBuildTool (C编译器);工具。setName(“英特尔C编译器”);tool.setCommand (icl);tool.setPath (");tool.setDirective (‘IncludeSearchPath’,‘我’);tool.setDirective (“PreprocessorDefine”,“- d”);tool.setDirective (“OutputFlag”、“佛”);tool.setDirective(“调试”、“子”);tool.setFileExtension(“源”、“c”); tool.setFileExtension('Header','.h'); tool.setFileExtension('Object','.obj'); tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|');

下面的例子显示相同的详细“获取和定义”的方法:

创建一个构建工具:

  1. 创建一个文件,它定义了一个BuildTool对象,如createBuildTool_1.mcreateBuildTool_2

  2. 创建一个文件addBuildToolToToolchainInfo.m,:

    • 创建一个ToolchainInfo对象,或使用现有的一个。

    • 创建一个BuildTool对象从createBuildTool_1.mcreateBuildTool_2

    • 添加了BuildTool对象的ToolchainInfo对象。

  3. 运行addBuildToolToToolchainInfo.m

请参考下面的例子addBuildToolToToolchainInfo.m,createBuildTool_1.m,createBuildTool_2.m

addBuildToolToToolchainInfo.m

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %% ToolchainInfo添加一个构建工具% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %%创建一个工具链对象h = coder.make.ToolchainInfo ();%的用户函数创建并填充一个构建工具工具= createBuildTool_1 ();%或工具= createBuildTool_2 ();%添加ToolchainInfo的构建工具h.addBuildTool (“我的C编译器”、工具);

createBuildTool_1.m

函数toolinfo buildToolObj = createBuildTool_1 ()。Name =“我的GNU C编译器”;toolinfo。语言=“C”;toolinfo.Command。宏=“CC”;toolinfo.Command。值=“海合会”;toolinfo.Path。宏=“CC_PATH”;toolinfo.Path。值=;toolinfo。OptionsRegistry = {“我的C编译器”,“MY_CFLAGS”};%这个指令的键名toolinfo.Directives (1)。关键=“IncludeSearchPath”;%的宏指令(指令可以空宏)toolinfo.Directives (1)。宏=;%这个指令的价值toolinfo.Directives (1)。值=“我”;toolinfo.Directives (2)。关键=“PreprocessorDefine”;toolinfo.Directives (2)。宏=;toolinfo.Directives (2)。值=“- d”;toolinfo.Directives (3)。关键=“调试”;toolinfo.Directives (3)。宏=“CDEBUG”;toolinfo.Directives (3)。值=“g”;toolinfo.Directives (4)。关键=“OutputFlag”;toolinfo.Directives (4)。宏=“C_OUTPUT_FLAG”;toolinfo.Directives (4)。值=“o”;%这个文件扩展名的键名toolinfo.FileExtensions (1)。关键=“源”;%宏的文件扩展名toolinfo.FileExtensions (1)。宏=“C_EXT”;%值的文件扩展名toolinfo.FileExtensions (1)。值=“c”;toolinfo.FileExtensions (2)。关键=“头”;toolinfo.FileExtensions (2)。宏=“H_EXT”;toolinfo.FileExtensions (2)。值=. h”;toolinfo.FileExtensions (3)。关键=“对象”;toolinfo.FileExtensions (3)。宏=“OBJ_EXT”;toolinfo.FileExtensions (3)。值=“.obj”;toolinfo。DerivedFileExtensions = {“(OBJ_EXT)美元”};%‘*’意味着所有输出都受支持金宝apptoolinfo。金宝appSupportedOutputs = {‘*’};%将实际扩展(如。“c”)或者keyname如果已经注册%在“FileExtensions”toolinfo。InputFileExtensions = {“源”};toolinfo。OutputFileExtensions = {“对象”};%创建一个构建工具对象和与上述数据填充它buildToolObj = createAndpopulateBuildTool (toolinfo);函数buildToolObj = createAndpopulateBuildTool (toolinfo)% - - - - - - - - - - - - - - - - - - - - - - - - -%建立BuildTool% - - - - - - - - - - - - - - - - - - - - - - - - -buildToolObj = coder.make.BuildTool ();% - - - - - - - - - - - - - - - - - - - - - - - - -%设置通用属性% - - - - - - - - - - - - - - - - - - - - - - - - -buildToolObj。Name =toolinfo。的名字;buildToolObj。语言=toolinfo。Language; buildToolObj.Command = coder.make.BuildItem(toolinfo.Command.Macro toolinfo.Command.Value);buildToolObj。路径= coder.make.BuildItem(toolinfo.Path.Macro toolinfo.Path.Value);buildToolObj。OptionsRegistry = toolinfo.OptionsRegistry;buildToolObj。金宝appSupportedOutputs = toolinfo.SupportedOutputs;% - - - - - - - - - - - - - - - - - - - - - - - - -%的指令% - - - - - - - - - - - - - - - - - - - - - - - - -i = 1:元素个数(toolinfo.Directives) directiveBuildItem = coder.make.BuildItem (toolinfo.Directives(我).Macro toolinfo.Directives (i) value);buildToolObj.addDirective (toolinfo.Directives (i)。key, directiveBuildItem);结束% - - - - - - - - - - - - - - - - - - - - - - - - -%的文件扩展名% - - - - - - - - - - - - - - - - - - - - - - - - -i = 1:元素个数(toolinfo.FileExtensions) fileExtBuildItem = coder.make.BuildItem (toolinfo.FileExtensions(我).Macro toolinfo.FileExtensions (i) value);buildToolObj.addFileExtension (toolinfo.FileExtensions (i)。key, fileExtBuildItem);结束% - - - - - - - - - - - - - - - - - - - - - - - - -%派生文件扩展名% - - - - - - - - - - - - - - - - - - - - - - - - -i = 1:元素个数(toolinfo.DerivedFileExtensions)如果buildToolObj buildToolObj.FileExtensions.isKey (toolinfo.DerivedFileExtensions{我})。DerivedFileExtensions{结束+ 1}=(' $ ('buildToolObj。getFileExtension (toolinfo.DerivedFileExtensions{我})“)”];其他的buildToolObj。DerivedFileExtensions{结束+ 1}= toolinfo.DerivedFileExtensions {};结束结束% - - - - - - - - - - - - - - - - - - - - - - - - -%命令模式% - - - - - - - - - - - - - - - - - - - - - - - - -如果isfield (toolinfo“CommandPattern”)buildToolObj。命令Pattern = toolinfo.CommandPattern;结束% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -%(输入/输出)FileExtensions% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -如果isfield (toolinfo“InputFileExtensions”)buildToolObj。InputFileExtensions = toolinfo.InputFileExtensions;结束如果isfield (toolinfo“OutputFileExtensions”)buildToolObj。OutputFileExtensions = toolinfo.OutputFileExtensions;结束

createBuildTool_2.m

函数buildToolObj = createBuildTool_2 ()% - - - - - - - - - - - - - - - - - - - - - - - - -%建立BuildTool% - - - - - - - - - - - - - - - - - - - - - - - - -buildToolObj = coder.make.BuildTool ();% - - - - - - - - - - - - - - - - - - - - - - - - -%设置通用属性% - - - - - - - - - - - - - - - - - - - - - - - - -buildToolObj。Name =“我的GNU C编译器”;buildToolObj。语言=“C”;buildToolObj。命令= coder.make.BuildItem(“CC”,“海合会”);buildToolObj。路径= coder.make.BuildItem(“CC_PATH”,);buildToolObj。OptionsRegistry = {“我的C编译器”,“MY_CFLAGS”};buildToolObj。金宝appSupportedOutputs = {‘*’};%‘*’意味着所有输出都受支持金宝app% - - - - - - - - - - - - - - - - - - - - - - - - -%的指令% - - - - - - - - - - - - - - - - - - - - - - - - -directiveBuildItem = coder.make.BuildItem (,“我”);buildToolObj.addDirective (“IncludeSearchPath”,directiveBuildItem);directiveBuildItem = coder.make.BuildItem (,“- d”);buildToolObj.addDirective (“PreprocessorDefine”,directiveBuildItem);directiveBuildItem = coder.make.BuildItem (“CDEBUG”,“g”);buildToolObj.addDirective (“调试”,directiveBuildItem);directiveBuildItem = coder.make.BuildItem (“C_OUTPUT_FLAG”,“o”);buildToolObj.addDirective (“OutputFlag”,directiveBuildItem);% - - - - - - - - - - - - - - - - - - - - - - - - -%的文件扩展名% - - - - - - - - - - - - - - - - - - - - - - - - -fileExtBuildItem = coder.make.BuildItem (“C_EXT”,“c”);buildToolObj.addFileExtension (“源”,fileExtBuildItem);fileExtBuildItem = coder.make.BuildItem (“H_EXT”,. h”);buildToolObj.addFileExtension (“头”,fileExtBuildItem);fileExtBuildItem = coder.make.BuildItem (“OBJ_EXT”,“.obj”);buildToolObj.addFileExtension (“对象”,fileExtBuildItem);% - - - - - - - - - - - - - - - - - - - - - - - - -%其他人% - - - - - - - - - - - - - - - - - - - - - - - - -buildToolObj。DerivedFileExtensions = {“(OBJ_EXT)美元”};buildToolObj。InputFileExtensions = {“源”};%将实际扩展(如。“c”)%或keyname如果已经注册在“FileExtensions”buildToolObj。OutputFileExtensions = {“对象”};%将实际扩展(如。“c”)%或keyname如果已经注册在“FileExtensions”

中的代码addPrebuildToolToToolchainInfo.maddPostbuildToolToToolchainInfo.m例子展示如何添加prebuild和postbuild工具工具链。

addPrebuildToolToToolchainInfo.m

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %%与选择SupportedOutputs ToolchainInfo添加一个预构金宝app建工具% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %%创建一个工具链对象tc = coder.make.ToolchainInfo (coder.make.getToolchainInfoFromRegistry (coder.make.getDefaultToolchain));%设置内联命令源依赖工具tc。InlinedCommands = [“定义sourceToDep = '10“$ (foreach来源,美元(1),(CC)美元(CFLAGS) - e多议员mf " $ (notdir $(来源:% c = % .d))”-MT"$(notdir $(source:%.c=%.o))" $(source) )'10“endef”];%设置makefile包括使= tc.BuilderApplication ();制作。IncludeFiles = {‘* .d‘};基于gcc %依赖文件生成器工具链prebuildToolName =“依赖文件发生器”;prebuildTool = tc.addPrebuildTool (prebuildToolName);%设置命令宏和值prebuildTool.setCommand (“SRC2DEP”,”(叫sourceToDep,美元(src))”);%设置工具选项宏prebuildTool。OptionsRegistry = {prebuildToolName,“SRC2DEP_OPTS”};%设置输出类型的工具prebuildTool。金宝appSupportedOutputs = {‘*’};tc。addBuildConfigurationOption (prebuildToolName prebuildTool);tc.setBuildConfigurationOption (“所有”prebuildToolName,);%显示预构建工具的属性tc.getPrebuildTool (“依赖文件发生器”)

addPostbuildToolToToolchainInfo.m

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %%添加post-build ToolchainInfo工具% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %%精灵(可执行的和可链接格式)16进制转换器postbuildToolName =“elf2hex转换器”;%创建和填充一个post-build工具tc = coder.make.ToolchainInfo;postbuild = tc.addPostbuildTool (postbuildToolName);%设置命令宏观和价值的工具postbuild.setCommand (“OBJCOPY”,“arm-none-eabi-objcopy”);%设置路径工具postbuild.setPath (“OBJCOPYPATH”,“(MW_GNU_ARM_TOOLS_PATH)美元”);%为工具设置选项postbuild。OptionsRegistry = {postbuildToolName,“OBJCOPYFLAGS_HEX”};%设置输出类型的工具postbuild。金宝appSupportedOutputs = {coder.make.enum.BuildOutput.EXECUTABLE};%为工具创建构建配置tc。addBuildConfigurationOption (postbuildToolName postbuild);%设置构建配置工具tc.setBuildConfigurationOption (“所有”postbuildToolName,“- o ihex(产品)(PRODUCT_HEX)美元);%显示post-build工具属性tc.getPostbuildTool (“elf2hex转换器”)

版本历史

介绍了R2013a