文档

在生成过程中控制库位置和命名

当您生成预编译、非预编译和模型参考库时,您可以通过使用配置参数来控制库位置和库名称。这些参数控制模型构建过程中生成的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 = coder.make.getDefaultToolchain()
  2. 获取默认的工具链句柄。例如,输入:

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

    tool_archiver = tc.getBuildTool(“文档”);
  4. 得到扩展。例如,输入:

    ext_archiver = tool_archiver.getFileExtension(“静态库”);

请注意

如果没有设置TargetLibSuffix参数、模板makefile和工具链方法产生相同的静态库文件名扩展。看到自定义库文件后缀和文件类型

指定预编译库的位置

使用TargetPreCompLibLocation配置参数为:

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

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

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

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

方法来设置参数set_param函数。例如:

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

在生成makefile期间,构建过程将令牌替换为rtwmakecfg.m文件。例如,如果rtwmakecfg.m文件是“rtwlib”,模板makefile构建方法将令牌从:

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

:

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

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

控制模型参考库的位置

在其他平台上苹果麦金塔电脑平台,当构建使用引用模型的模型时,默认构建过程包括:

  • 将被引用模型使用的库复制到父模型的构建文件夹中。

  • 将库的文件名分配给MODELREF_LINK_LIBS生成的makefile中。

例如,如果一个模型包含一个引用模型时,构建过程分配库名称sub_rtwlib.libMODELREF_LINK_LIBS。构建过程将库文件复制到父模型的构建文件夹中。然后在最后的链接行中使用该定义,将库链接到最终产品(通常是可执行文件)。这种技术使链接线的长度最小化。

麦金塔电脑平台,以及可选的其他平台,构建过程包括:

  • 不将被引用模型使用的库复制到父模型的构建文件夹中。

  • 将库的相对路径和文件名分配给MODELREF_LINK_LIBS生成的makefile中。

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

在平台上更改为非默认行为麦金塔电脑平台,选择配置参数>代码生成>使命令字段。输入:

make_rtw USE_MDLREF_LIBPATHS = 1

如果指定其他Make命令参数,例如选择= " g ",指定多个参数的顺序无关紧要。

若要恢复默认行为,请设置USE_MDLREF_LIBPATHS到0,或者去掉它。

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

使用模板makefile方法构建模型,请使用TargetLibSuffix参数来控制应用于库名的后缀(例如,_target.lib_target.a).指定的后缀方案必须包含“。”。你可以申请TargetLibSuffix转到以下库:

  • 类中指定的目标所依赖的库rtwmakecfg.mAPI。你可以用TargetLibSuffix属性配置的预编译库和非预编译库的后缀rtwmakecfgAPI。有关详情,请参阅使用rtwmakecfg。m API来定制生成的makefile

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

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

    方法的调用set_param函数。例如:

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

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

    > expand_library_location <|\|> expand_library_name <|\|> expand_library_suffix <|

    :

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

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

  • 共享的实用程序库和使用模型引用创建的模型库。对于这些情况,关联的makefile变量不需要| > EXPAND_LIBRARY_SUFFIX < |令牌。相反,构建过程包括TargetLibSuffix隐式。比如,一个叫topmodel引用模型命名为refmodel1refmodel2,顶层模型的TMF展开为:

    Shared_lib = |> Shared_lib <| modellib = |> modellib <| modelref_link_lib = |> modelref_link_libs <|

    :

    SHARED_LIB = \ ..\slprj\ert\_sharedutils\rtwshared_target. xmllibrary MODELLIB = topmodellib_target。library modelmodel_link_libs = \ refmodel1_rtwlib_target。图书馆refmodel2_rtwlib_target.library

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

    SHARED_LIB = ..\slprj\ert\_sharedutils\rtwshared。lib MODELLIB = topmodellib。. lib MODELREF_LINK_LIBS = refmodel1_rtwlib. lib自由refmodel2_rtwlib.lib
这个话题有帮助吗?