ビルド中のライブラリの位置および名前付けの制御
プリコンパイル済みのライブラリ、プリコンパイルされていないライブラリ、およびモデル参照ライブラリを生成する場合、コンフィギュレーション パラメーターを使用してライブラリの位置とライブラリ名を制御できます。これらのパラメーターは、モデルのビルド中に生成された makefile の値を制御します。
ツールチェーン アプローチを使用するビルド プロセスの場合、
TargetPreCompLibLocation
コンフィギュレーション パラメーターを使用して生成されたライブラリの位置を制御します。テンプレート makefile アプローチを使用するビルド プロセスで、
TargetPreCompLibLocation
コンフィギュレーション パラメーターを使用して生成されたライブラリ名を制御し、TargetLibSuffix
コンフィギュレーション パラメーターを使用して生成されたライブラリ名を制御します。
ライブラリ制御パラメーター
ライブラリ制御パラメーターを使用して、次を行います。
ブロックセット ライブラリや Simulink® Coder™ ブロック ライブラリなどのプリコンパイル済みライブラリの位置を指定します。一般的に、ターゲットはこれらのライブラリのバージョンをクロスコンパイルし、ターゲット固有のフォルダーに置きます。
ライブラリ ファイル名に適用される接尾辞を制御します (たとえば、
_target.a
または_target.lib
)。
ターゲットはシステム ターゲット ファイル (STF) 内のパラメーターを選択コールバックに設定することができます。以下に例を示します。
function mytarget_select_callback_handler(varargin) hDig=varargin{1}; hSrc=varargin{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(model,'TargetPreCompLibLocation',... 'c:\mytarget\precomplibs');
メモ
モデルが参照モデルを含んでいる場合は、make オプション USE_MDLREF_LIBPATHS
を使用して、参照モデルの使用するライブラリをビルド フォルダーにコピーするかどうかを制御することができます。詳細については、モデル参照ライブラリの位置を参照してください。
ツールチェーン アプローチのライブラリ ファイル タイプの特定
モデル ビルドのツールチェーン アプローチは、ライブラリ ファイル名
および suffix
を選択するのに extension
TargetLibSuffix
コンフィギュレーション パラメーターの値は使用しません。
ツールチェーン アプローチでは、最終バイナリ名はツールチェーン定義のビルド ツールの説明で提供される
、modelname
および compilername
で構成されます。extension
model_compilername
.extension
ツールチェーン定義のビルド ツールの説明からスタティック ライブラリ ファイル名の拡張子を識別できます。既定のツールチェーンのこの情報を入手するには、次の手順に従います。
既定のツールチェーン名を取得します。たとえば、次のコマンドを入力します。
tc_name = coder.make.getDefaultToolchain()
既定のツールチェーン ハンドルを取得します。たとえば、次のコマンドを入力します。
tc = coder.make.getToolchainInfoFromRegistry(tc_name)
ツールチェーン オブジェクトへのハンドルを取得します。たとえば、次のコマンドを入力します。
tool_archiver = tc.getBuildTool('Archiver');
拡張子を取得します。たとえば、次のコマンドを入力します。
ext_archiver = tool_archiver.getFileExtension('Static Library');
メモ
TargetLibSuffix
パラメーターを設定しない場合、テンプレート makefile およびツールチェーン アプローチは同じスタティック ライブラリ ファイル名
を生成します。extension
プリコンパイル済みのライブラリの位置を指定
TargetPreCompLibLocation
コンフィギュレーション パラメーターを使用して以下を実行します。
rtwmakecfg.m
ファイル内で指定されたプリコンパイル済みのライブラリの位置をオーバーライド (詳細については、生成された makefile を rtwmakecfg.m API を使用してカスタマイズを参照)製品ライブラリ (たとえば、DSP System Toolbox™ 製品) のターゲット固有のバージョンのプリコンパイルと配布
ブロックセット ライブラリや Simulink Coder ブロック ライブラリなどのプリコンパイル済みのライブラリの場合、rtwmakecfg.m
内で指定される位置は一般的にブロックセットや Simulink Coder 製品に固有の位置です。コード ジェネレーターは、この場所にライブラリが存在することを前提にして、ビルド中にライブラリをリンクします。
カスタムのターゲットなどのアプリケーションによっては、rtwmakecfg.m
内で指定される位置ではなく、ターゲット固有か他の代わりの位置にプリコンパイル済みのライブラリを置くほうがいい場合があります。カスタム ターゲットの場合、コード ジェネレーターでは、ターゲット固有のクロスコンパイラでライブラリが作成され、そのライブラリがターゲット固有の場所に配置される必要があります。ターゲットでサポートされるライブラリは、ビルド プロセス中に使用できるように、ターゲット固有の位置にコンパイルして配置します。
その選択コールバック内で TargetPreCompLibLocation
パラメーターを設定することができます。パラメーター用に指定するパスはライブラリの場所に対する完全修飾の絶対パスでなければなりません。相対パスはサポートされません。以下に例を示します。
slConfigUISetVal(hDlg, hSrc, 'TargetPreCompLibLocation',... 'c:\mytarget\precomplibs');
代わりに、関数 set_param
を呼び出してパラメーターを設定することもできます。以下に例を示します。
set_param(model,'TargetPreCompLibLocation',... 'c:\mytarget\precomplibs');
makefile 生成中に、ビルド プロセスはトークンを 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/sub_rtwlib.lib
のようなパスを MODELREF_LINK_LIBS
に割り当てます。ビルド プロセスはリンク時にそのパスを使用してライブラリ ファイルへのアクセスを取得します。
接尾辞をライブラリ ファイル名に制御
モデル ビルドのテンプレート makefile アプローチで、TargetLibSuffix
コンフィギュレーション パラメーターを使用して、ライブラリ名に適用される接尾辞を制御します (たとえば、_target.lib
や _target.a
)。指定の接尾辞スキームはピリオド (.) を含まなければなりません。TargetLibSuffix
を以下のライブラリに適用することができます。
rtwmakecfg.m
API 内で指定されるようなターゲットが依存するライブラリ。TargetLibSuffix
を使用して、rtwmakecfg
API から設定されるプリコンパイル済みライブラリとプリコンパイルされていないライブラリの接尾辞を変更することができます。詳細については、生成された makefile を rtwmakecfg.m API を使用してカスタマイズを参照してください。この例では、ターゲットはその選択コールバック内でパラメーターを設定することができます。以下に例を示します。
slConfigUISetVal(hDlg, hSrc, 'TargetLibSuffix',... '_target.library');
代わりに、関数
set_param
への呼び出しを使用することもできます。以下に例を示します。set_param(model,'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
を含みます。たとえば、refmodel1
とrefmodel2
という名前の参照モデルをもつtopmodel
という名前の最上位モデルの場合、最上位モデルの TMF は以下から拡張されます。MODELLIB = |>MODELLIB<| MODELREF_LINK_LIBS = |>MODELREF_LINK_LIBS<|
これを次のように変更します。
MODELLIB = topmodellib_target.library MODELREF_LINK_LIBS = \ refmodel1_rtwlib_target.library refmodel2_rtwlib_target.library
既定の設定では、
TargetLibSuffix
パラメーターは空の文字ベクトルです。この例では、ビルド プロセスは、Windows® ホスト上の.lib
と UNIX® ホスト上の.a
のファイル拡張子を使用して、これらの 3 つのトークン用の既定の接尾辞を選択します。モデル参照ライブラリの場合は、既定の接尾辞は_rtwlib
も含みます。たとえば、Windows ホスト上では、拡張された makefile 値は以下のようになります。MODELLIB = topmodellib.lib MODELREF_LINK_LIBS = refmodel1_rtwlib.lib refmodel2_rtwlib.lib