このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
金宝appSimulink環境内での統合コ,ドのビルド
ワクフロ
生成コードと外部Cまたはc++コードを統合する実行可能プログラムをビルドするには,次の表のタスクを反復します。
タスク |
アクション |
詳細 |
---|---|---|
1 |
ビルドプロセスとしてツールチェーンアプローチまたはテンプレートmakefileアプローチのどちらを使用するか選択します。 |
ビルドアプロ,チの選択およびビルドプロセスの設定(嵌入式编码) 例にいては,リアルタムシステムのビルドプロセスワクフロ(嵌入式编码)を参照してください。 |
2 |
外部コ,ドのビルドプロセスサポ,トを構成します。 |
統合コ,ドビルドプロセスのパラメ,タ,の構成(嵌入式编码) |
3. |
外部コドのS-Functionビルドサポトを構成します。 |
S-Functionのビルドサポ,ト(嵌入式编码) 生成されるmakefileをmakecfgを使用してs函数用にカスタマイズする(嵌入式编码) 例にいては,モデルおよび生成コドからの外部cコドの呼び出し(嵌入式编码)とシミュレ,ションおよびコ,ド生成のための再利用可能な外部アルゴリズムコ,ドの呼び出し(嵌入式编码)を参照してください。 |
4 |
外部コドソス,ラブラリ,ヘッダファルを検索するようビルドプロセスを構成します。 |
ビルドプロセスのファ@ @ルの依存関係の管理(嵌入式编码) ビルド中のラ@ @ブラリの位置および名前付けの制御(嵌入式编码) |
5 |
外部コ,ドの統合に必要なカスタムのビルド処理を設定します。 |
ビルドプロセスのカスタマ▪▪ズワ▪▪クフロ▪に▪▪いてはコド生成後のビルドプロセスのカスタマズ(嵌入式编码)を参照してください。 ビルドカスタマイズのツールチェーンアプローチビルドへの適用を自動化するには,sl_customization。Mによるビルドプロセスのカスタマescズ(嵌入式编码)を参照してください。 ビルドカスタマSTF_make_rtw_hookファ▪▪ルによるビルドプロセスのカスタマ▪▪ズ(嵌入式编码)を参照してください。 |
統合コ,ドビルドプロセスのパラメ,タ,の構成
次の表に,外部コード統合のビルドプロセスをサポートする[モデルコンフィギュレーションパラメーター]ダイアログボックスの[コ,ド生成]、[カスタムコ,ド]ペンのモデルコンフィギュレションパラメタのガドを示します。外部コドのフォルダの詳細にいては,ビルドプロセスのフォルダ,の管理(嵌入式编码)を参照してください。コド生成フォルダに外部コ,ドを配置する場合は,ビルドフォルダでの外部コドファルの保持(嵌入式编码)を参照してください。
目的 | 選択 |
---|---|
ヘッダファルを含んでいるンクルドフォルダをビルドプロセスに追加する |
[追加のビルド情報]、[huawei @ huawei @ huawei @ huawei @ huawei @ huawei]を選択し,フォルダ,の絶対パスまたは相対パスを入力します。 相対パスを指定する場合,そのパスは,ビルドフォルダーではなく,モデルファイルを含んでいるフォルダーに対して相対的でなければなりません。フォルダを指定する順序は,ヘッダ,ソスおよびラブラリファルが検索される順序です。 |
コンパ▪▪ルおよびリンク対象のソ▪▪スファ▪▪ルを追加する |
[追加のビルド情報]、[ソスファル]を選択し,ファaaplルの絶対パスまたはファaaplル名を入力します。 ファaapl . exeルが現在のmatlab®フォルダまたはンクルドフォルダのいずれかにある場合,ファル名のみを入力します。指定した追加のソースごとに,ビルドプロセスは,ソースファイルが存在するフォルダーのテンプレートmakefileに一般的なルールを拡張します。たとえば,ソスファルがフォルダ %。obj: buildir \企业\ % c (CC) - c fo (@F)美元(CFLAGS) <美元 ビルドプロセスは、ソ、スファ、ルがリストされている順序でル、ルを追加します。 |
リンクするラ@ @ブラリを追加する |
[追加のビルド情報]、[ラ电子邮箱ブラリ]を選択し,ラaaplブラリの絶対パスまたはファaaplル名を入力します。 ライブラリが現在のMATLABフォルダーまたはインクルードフォルダーのいずれかにある場合,ファイル名のみを入力します。 |
MATLAB函数ブロック,Stateflow®チャートおよび真值表ブロックのシミュレーションに指定された設定と同じカスタムコード設定を使用する |
[シミュレ,ションタ,ゲットと同じカスタムコ,ドの設定を使用]を選択します。 このパラメタは,[コンフィギュレションパラメタ]ダアログボックスの[シミュレ,ションタ,ゲット]ペ@ @ンを参照します。 |
ライブラリがリンクしている親モデルから一意のカスタムコード設定をライブラリモデルで使用できるようにする |
[ロ.カルなカスタムコ.ド設定を使用(メ.ンモデルから継承しません)]を選択します。 このパラメ,タ,は,MATLAB函数ブロック,Stateflowチャートまたは真值表ブロックを含むライブラリモデルに対してのみ使用可能です。 |
ビルドフォルダでの外部コドファルの保持
既定では,ビルドプロセスで外部のソ,スファ,ルは削除されます。次のガドランに従って,外部ソスファルを保持できます。
. c . cpp /
または. h
ソースファイルをビルドフォルダーに入れて,コードジェネレーターでTLCコード生成プロセス時にこのソースファイルが削除されないようにするには,. c . cpp /
または. h
ファesc escルの1行目にテキスト目标特定文件
を挿入します。以下に例を示します。
/* COMPANY-NAME目标指定文件* *该文件创建用于* COMPANY-NAME目标。它被用于……* /…
前の例で示されているように,正確にテキスト“瞄准特定文件”を入力し,この文字列がソースファイルの1行目に置かれるようにしてください。その他のテキストは,このテキストの前または後に表示されます。
この方法でユーザーファイルにフラグを設定すると,ユーザーファイルへの後処理が回避されて,生成されたソースファイルと共にユーザーファイルがインデントされないようになります。旧リリ,スでは,パタ,ン模型
_ * . c / . cpp
(ここで)*
はテキスト)の名前をもフォルダファルをビルドするために自動ンデントが行われていました。インデントは無害ですが,ソース管理ソフトウェアによって違いが検出されることがあり,そのために不必要な更新がトリガーされる可能性があります。
S-Functionのビルドサポ,ト
ユ,ザ,が記述するS-Functionブロックには,外部コ,ドをSim金宝appulink®開発環境に組み込むための強力な方法が用意されています。多くの場合,S-Functionを使用して既存の外部コ,ドを生成コ,ドに統合します。以下のように,S-Functionの記述に使用できる方法がいくかあります。
古い形式のコードファイルやカスタムコードファイルのビルド情報をビルドプロセスに含めるために,s函数にも柔軟で機能的な方法が用意されています。
S-Functionsをビルドプロセスに追加するさまざまな方法があります。
暗黙的なビルドサポ,ト
s函数を使用してモデルをビルドする場合,ビルドプロセスによって,規則,インクルードパスおよびソースファイル名が生成済みのmakefileに追加されます。S-Functionのソスファル(. h
、. c
および. cpp
)をS-Function MEXファaapl .ルと同じフォルダ.に配置しなければなりません。ビルドにツールチェーンアプローチを使用しているかテンプレートmakefileアプローチを使用しているかにかかわらず,ビルドプロセスではツールチェーンまたはテンプレートmakefileを介してこの情報が伝播されます。
ファereplicationル
がS-Function MEXファ电子邮箱ル(sfcnname
. h
など)と同じフォルダに存在する場合,そのフォルダはンクルドパスに追加されます。sfcnname
.mexext
ファereplicationル
またはsfcnname
. c
がs函数墨西哥人ファイルと同じフォルダーに存在する場合,ビルドプロセスはそのフォルダーからファイルをコンパイルするためのmakefile規則を追加します。sfcnname
. cpps函数がTLCファイルでインライン化されていないと,ビルドプロセスはそのs函数のソースファイルをコンパイルしなければなりません。ソースファイルの名前をコンパイルするファイルのリストに追加するかどうかを決定するために,ビルドプロセスはMATLABパスで
を検索します。ソースファイルを見つけると,ビルドプロセスはそのソースファイル名をmakefileに追加します。パスでsfcnname
. cpp
が見からないと,ビルドプロセスはファル名sfcnname
. cpp
がMATLABパス上にあるかどうかにかかわらず,この名前をmakefileに追加します。sfcnname
. cメモ
金宝app仿真软件エンジンでシミュレーションやコード生成のための墨西哥人ファイルを見つけるには,ファイルがMATLABパス上か,現在のMATLAB作業フォルダー内になければなりません。
S-Functionの追加ソスファルの指定
s函数に追加のソースファイルの依存関係がある場合は,追加モジュールの名前をビルドプロセスに追加しなければなりません。次のようにファ@ @ル名を指定します。
S-Functionブロックパラメタダアログボックスの[S-Functionモジュ,ル]フィ,ルドで指定
関数
set_param
の呼び出しのSFunctionModules
パラメ,タ,を使用して指定
たとえば,複数のモジュ,ルでS-Functionをビルドするとします。
Mex sfun_main.c sfun_module1.c sfun_module2.c
次のいずれかを実行すると,モジュ,ルをビルドプロセスに追加できます。
S-Functionブロックパラメタダアログボックスの[S-Functionモジュ,ル]フィ,ルドで
sfun_main
、sfun_module1
およびsfun_module2
を指定します。Matlabコマンドプロンプトで,次のように入力します。
set_param (sfun_block, ' SFunctionModules”、“sfun_module1 sfun_module2”)
または,変数を定義してパラメ,タ,値を表すことができます。
set_param(sfun_block,' sfun_module1 ', modules)
[S-Functionモジュ,ル]フィ,ルドとSFunctionModules
パラメタは,完全なソスファルパスの仕様をサポトしません。パラメタを使用するには、makefile の実行時にコード ジェネレーターが追加ソース ファイルを検出しなければなりません。コード ジェネレーターが追加ファイルの場所を特定するように、そのファイルを S-Function MEX ファイルと同じフォルダーに配置します。これで、暗黙的なビルドサポ,トに記載されている暗黙的なビルドサポ,トを活用できます。
コ,ドを生成する準備ができたら,最上位モデルコ,ドの再生成の制御の説明にあるように,コ,ドジェネレ,タ,で最上位モデルを強制的にリビルドします。
他の場所にあるソースファイルの指定やライブラリまたはオブジェクトファイルの指定など,複雑なs函数ファイルの依存関係では,生成されたmakefileをrtwmakecfg。m APIを使用してカスタマaaplズで説明されているようにrtwmakecfg.m
APIを使用します。
TLCラブラリ関数の使用
TLCファ▪▪ルを記述して—functionを▪▪ンラ▪▪ン化する場合,TLCラ▪▪ブラリ関数LibAddToModelSources
を使用してソスファル名をビルドプロセスに追加できます。詳細にいては,LibAddSourceFileCustomSection(文件,builtInSection, newSection)を参照してください。
メモ
この関数は完全なソスファルパスの指定をサポトしません。makefileの実行時にコードジェネレーターが追加のソースファイルを検出できるものとみなします。
その他に,LibAddToCommonIncludes
というTLCラブラリ関数が役立ます。この関数は,生成された模型
. h
ヘッダファルにS-Functionヘッダファルを含めるために,# include
ステ,トメントで使用します。詳細にいては,LibAddToCommonIncludes (incFileName)を参照してください。
他の場所にあるソースファイルの指定やライブラリまたはオブジェクトファイルの指定など,複雑なs函数ファイルの依存関係では,生成されたmakefileをrtwmakecfg。m APIを使用してカスタマaaplズで説明されているようにrtwmakecfg.m
APIを使用します。
S-Functionラ▪▪ブラリのプリコンパ▪▪ル
Matlab言語関数rtw_precompile_libs
を使用することによって,モデルに適した新しいまたは更新したs函数ライブラリ(墨西哥人ファイル)をプリコンパイルできます。この関数は、指定されたモデルおよびライブラリ ビルド仕様を使用し、ライブラリを作成してプリコンパイル済みのライブラリ フォルダーにライブラリを配置します。
s函数ライブラリをプリコンパイルすることによって,システムビルドを最適化できます。プリコンパイル済みのライブラリが存在する場合,ビルドプロセスはその後のビルドからライブラリのコンパイルを省略できます。多数のラesc escブラリを使用するモデルでは,ビルドプロセスでの時間短縮は大きな意味があります。
rtw_precompile_libs
を使用するには,次を行います。
システムプラットフォームに基づいたファイルタイプの拡張子など,ライブラリファイルの接尾辞を設定します。
プラットフォムのタプを特定したら,
TargetLibSuffix
パラメタを使用してそれに対応したラブラリ接尾辞を設定することを検討します。たとえば,grtタ,ゲットの接尾辞を適用する場合,unix®プラットフォ,ムの_std.a
およびWindows®プラットフォ,ムの_vcx64.lib
に接尾辞を設定できます。如果isunix suffix = '_std.a';Else suffix = '_vcx64.lib';end set_param(my_model,'TargetLibSuffix', suffix);
プリコンパ▪▪ル済みのラ▪▪ブラリ接尾辞と拡張子に影響する要因はいく▪▪かあります。以下の表に,接尾辞と拡張子の選択肢に影響するシステムターゲットファイル,コンパイラツールチェーン,その他のオプションの典型的な選択例を示します。詳細は,
matlab / rtw grt / c /
フォルダ,またはmatlab rtw / c /导
フォルダ,でテンプレ,トmakefileを確認してください。TMFファaaplル 编译器_tool_chain値 プリコンパesc esc esc esc esc esc esc esc esc esc 扩展_LIBRARY _NAME値扩展_LIBRARY _NAME値 整数のみのコドのラブラリ接尾辞(expand _library _name値) 速度を最適化するラ目录目录ブラリ接尾辞(expand _library _name値) ラ目录目录ブラリ拡張子(expand _library _name値) ert_lcc64.tmf 低成本航空 _rtwsfcn_lcc _int_ert_lcc _ert_lcc . lib ert_vcx64.tmf vcx64 _rtwsfcn_vcx64 _int_ert_vcx64 _ert_vcx64 . lib ert_unix.tmf unix _rtwsfcn _int_ert _ert 。 grt_lcc64.tmf 低成本航空 N/A N/A _lcc . lib grt_vcx64.tmf vcx64 N/A N/A _vcx64 . lib grt_unix.tmf unix N/A N/A _std 。 プリコンパ@ @ル済みのラ@ @ブラリフォルダ@ @を設定します。
次のメソッドのいずれかを使用して,プリコンパ@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
プリコンパ▪▪ル済みのラ▪▪ブラリの位置を指定で説明されている
TargetPreCompLibLocation
パラメタを設定します。rtwmakecfg.m
関数ファ@ @ルでmakeInfo.precompile
フィ,ルドを設定します(詳細にいては,生成されたmakefileをrtwmakecfg。m APIを使用してカスタマaaplズを参照してください)。
TargetPreCompLibLocation
とmakeInfo.precompile
の両方を設定する場合は,TargetPreCompLibLocation
の設定内容が優先されます。次のコマンドは,モデル
my_model
のプリコンパル済みラブラリフォルダを,現在の作業フォルダの下にあるフォルダ自由
に設定します。set_param (my_model TargetPreCompLibLocation, fullfile (pwd, '自由'));
メモ
プリコンパイル済みライブラリファイルのターゲットフォルダーとターゲットライブラリファイルの接尾辞の両方を設定する場合,ビルドプロセスは,ビルド処理中にプリコンパイル済みライブラリファイルが失われているかどうかを検出します。
ビルド仕様を定義します。
ビルド仕様を定義する構造体を設定します。次の表では,構造体で定義できるフィ,ルドを説明します。これらのフィ,ルドは
rtwmakecfgDirs
を除き,オプションです。フィ,ルド 説明 プリコンパ▪▪ルするラ▪▪ブラリの
rtwmakecfg
ファiphones cell配列。この関数はrtwmakecfg
が返すのと同様に,makeInfo.library
の名字
要素と位置
要素を使用して,プリコンパaaplル済みラaaplブラリの名前と位置を指定します。TargetPreCompLibLocation
パラメタをラブラリフォルダを指定するように設定すると,その設定はmakeInfo.library.Location
の設定を上書きします。メモ:指定したモデルは,
rtwmakecfg
ファ▪▪ルで指定されるプリコンパ▪▪ル済みラ▪▪ブラリを使用するブロックを含んでいなければなりません。これは,ビルドプロセスでライブラリを使用する場合に限って,TMFからmakefileへの変換でライブラリの規則が生成されるからです。各ラescブラリの名前( 。
、_vc.lib
など)に追加する,ファaapl .ルタaapl .プの拡張子を含むサフィックスを指定する文字ベクトル。文字ベクトルはピリオド(.)を含まなければなりません。このフィ,ルドかTargetLibSuffix
パラメ,タ,を使用してサフィックスを設定します。両方の方法で接尾辞を指定した場合はこのフィ,ルドの設定内容がTargetLibSuffix
の設定によってオバラドされます。布尔值フラグ。真正に設定すると,フラグは,ライブラリが整数コードからしかコンパイルされないようにライブラリが最適化されることを示します。このフィルドはertタゲットにのみ適用されます。 rtwMake
コマンドラ@ @ンに含まれるオプションを指定する文字ベクトル。関数
rtwmakecfg
で指定されない作成対象のラesc escブラリを指定する構造体のcell配列。各構造体は,文字配列である2のフィルドで定義されなければなりません。库名
-サフィックスのないラie浏览器ブラリ名libLoc
—プリコンパaapl . exeル済みラaapl . exeブラリの位置
ターゲットmakefile (TMF)では,他のライブラリと,ライブラリのビルド方法を指定できます。このフィルドを使用して,それらのラブラリをプリコンパルします。
次のコマンドはビルド仕様
build_spec
を設定します。これによって,コンパsrc
内に存在することが示されます。Build_spec = [];build_spec。rtwmakecfgDirs = {fullfile(pwd,'src')};
rtw_precompile_libs
を呼び出します。この呼び出しでは,プリコンパイル済みのライブラリとビルド仕様を作成するモデルを指定しなければなりません。次に例を示します。
rtw_precompile_libs (my_model build_spec);
関連するトピック
- シミュレ,ションおよびコ,ド生成のための再利用可能な外部アルゴリズムコ,ドの呼び出し(嵌入式编码)
- 生成されたコドへの外部c / c++コドの配置(嵌入式编码)
- 外部デバ@ @スドラ@ @バ@ @の呼び出し(嵌入式编码)
- 将生成的独立可执行程序部署到目标硬件(嵌入式编码)
- 将生成的组件软件部署到应用程序目标平台(嵌入式编码)