主要内容

控件库在生成期间的位置和命名

在生成预编译、非预编译和模型引用库时,可以使用配置参数控制库的位置和库的名称。这些参数控制模型构建过程中生成的makefile中的值:

  • 对于使用工具链方法的构建流程,可以使用TargetPreCompLibLocation配置参数。

  • 对于使用模板生成文件方法的构建流程,可以使用TargetPreCompLibLocation参数并控制生成的库名称TargetLibSuffix配置参数。

库控制参数

使用库控件参数来:

  • 指定预编译库的位置,例如块集库或金宝app®编码器™块库。通常,目标具有这些库的交叉编译版本,并将它们放在特定于目标的文件夹中。

  • 控制应用于库文件名的后缀(例如,_target.a_target.lib).

目标可以设置内部参数的系统目标文件(STF)选择回调。例如:

函数mytarget_select_callback_handler(varargin) hDig=varargin{1};hSrc =变长度输入宗量{2};slConfigUISetVal(hDig, hSrc, 'TargetPreCompLibLocation',…“c: \ mytarget \ precomplibs”);slConfigUISetVal(hDig, hSrc, 'TargetLibSuffix',…“_target.library”);

TMF有相应的扩展令牌:

| > EXPAND_LIBRARY_LOCATION < | | > EXPAND_LIBRARY_SUFFIX < |

或者,您可以使用对set_param函数。例如:

set_param(模型、“TargetPreCompLibLocation”……“c: \ mytarget \ precomplibs”);

请注意

如果您的模型包含引用的模型,您可以使用make选项USE_MDLREF_LIBPATHS控制被引用模型使用的库是否被复制到父模型的构建文件夹中。有关更多信息,请参见示范参考图书馆位置

确定工具链方法的库文件类型

用于模型构建的工具链方法不使用TargetLibSuffix配置参数以选择库文件名后缀而且扩展

使用工具链方法,最终的二进制名称由modelname,compilername,以及扩展由工具链定义中的构建工具描述提供:

model_compilername扩展

您可以从工具链定义中的构建工具描述中识别静态库文件扩展名。要获取默认工具链的这些信息,请使用以下过程:

  1. 获取默认的工具链名称。例如,输入:

    tc_name = code .make. getdefaulttoolchain ()
  2. 获取默认的工具链句柄。例如,输入:

    tc = code .make. gettoolchaininfofromregistry (tc_name)
  3. 获取工具链对象的句柄。例如,输入:

    tool_archiver = tc.getBuildTool“文档”);
  4. 申请分机。例如,输入:

    ext_archiver = tool_archive . getfileextension (“静态库”);

请注意

如果没有设置TargetLibSuffix参数、模板makefile和工具链方法产生相同的静态库文件名扩展

指定预编译库的位置

使用TargetPreCompLibLocation配置参数为:

对于预编译库,例如块集库或金宝app仿真软件编码器块库中指定的位置rtwmakecfg.m通常是特定于块集或金宝app仿真软件编码器产品。代码生成器期望库存在于此位置,并在构建期间链接到库。

对于某些应用程序,例如自定义目标,最好将预编译库定位在特定于目标的位置或其他替代位置,而不是定位在中指定的位置rtwmakecfg.m.对于自定义目标,代码生成器期望特定于目标的交叉编译器创建库,并将库放在特定于目标的位置。编译并将目标支持的库放置在目标特定的位置,以便在构建过程金宝app中使用它们。

你可以设置TargetPreCompLibLocation参数。为参数指定的路径必须是库位置的完全限定绝对路径。不支持相对路径。金宝app例如:

(hDlg, hSrc, 'TargetPreCompLibLocation',…“c: \ mytarget \ precomplibs”);

的调用来设置该参数set_param函数。例如:

set_param(模型、“TargetPreCompLibLocation”……“c: \ mytarget \ precomplibs”);

在生成生成文件期间,构建过程将标记替换为rtwmakecfg.m文件。例如,如果库名称在rtwmakecfg.m文件是“rtwlib”,模板makefile构建方法从以下方面扩展令牌:

LIBS += |>EXPAND_LIBRARY_LOCATION<|\|>EXPAND_LIBRARY_NAME<|\ _target.library

:

LIBS += c:\mytarget\precomplibs\rtwlib_target.library

默认情况下,TargetPreCompLibLocation是一个空字符向量。构建过程使用中的位置rtwmakecfg.m用于令牌替换。

示范参考图书馆位置

构建过程分配一个路径,例如. . / slprj grt / /子/ sub_rtwlib.libMODELREF_LINK_LIBS.构建过程使用该路径在链接时获得对库文件的访问权。

控制应用于库文件名的后缀

对于模型构建的模板生成文件方法,可以使用TargetLibSuffix参数来控制应用于库名的后缀(例如,_target.lib_target.a).指定的后缀方案必须包含句点(.)。你可以申请TargetLibSuffix以下图书馆:

  • 类中指定的目标所依赖的库rtwmakecfg.mAPI。你可以用TargetLibSuffix方法配置的预编译库和非预编译库的后缀rtwmakecfgAPI。详情请参见使用rtwmakecfg。m API自定义生成的makefile

    在这种情况下,目标可以在其选择回调中设置参数。例如:

    (hDlg, hSrc, 'TargetLibSuffix',…“_target.library”);

    或者,您可以使用对set_param函数。例如:

    set_param(模型、“TargetLibSuffix”、“_target.library”);

    在tmf到makefile的转换过程中,构建过程将替换令牌| > EXPAND_LIBRARY_SUFFIX < |使用指定的后缀。方法中指定的库名称rtwmakecfg.m文件是“rtwlib”, TMF扩展为:

    Libs += |> expand_library_location <|\|> expand_library_name <|\|> expand_library_suffix <|

    :

    LIBS += c:\mytarget\precomplibs\rtwlib_target.library

    默认情况下,TargetLibSuffix设置为空字符向量。在这种情况下,构建过程将替换令牌| > EXPAND_LIBRARY_SUFFIX < |使用一个空的字符向量。

  • 使用模型引用创建的模型库。对于这些情况,关联的makefile变量不需要| > EXPAND_LIBRARY_SUFFIX < |令牌。相反,构建过程包括TargetLibSuffix隐式。比如,一个顶级模特叫topmodel引用模型命名refmodel1而且refmodel2,顶模型的TMF由:展开:

    Modellib = |> Modellib <| modelref_link_libs = |> modelref_link_libs <|

    :

    MODELLIB = topmodellib_target。库MODELREF_LINK_LIBS = \ refmodel1_rtwlib_target。图书馆refmodel2_rtwlib_target.library

    默认情况下,TargetLibSuffix参数是一个空的字符向量。在本例中,构建过程使用文件扩展名为为这三个令牌选择一个默认后缀. lib在Windows上®主机和.a在UNIX®主机。对于模型引用库,默认后缀还包括_rtwlib.例如,在Windows主机上,展开的makefile值为:

    MODELLIB = topmodellib。lib MODELREF_LINK_LIBS = refmodel1_rtwlib. lib自由refmodel2_rtwlib.lib