主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

金宝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ルsfcnname. hがS-Function MEXファ电子邮箱ル(sfcnnamemexextなど)と同じフォルダに存在する場合,そのフォルダはンクルドパスに追加されます。

  • ファereplicationルsfcnname. cまたはsfcnname. cppがs函数墨西哥人ファイルと同じフォルダーに存在する場合,ビルドプロセスはそのフォルダーからファイルをコンパイルするためのmakefile規則を追加します。

  • s函数がTLCファイルでインライン化されていないと,ビルドプロセスはそのs函数のソースファイルをコンパイルしなければなりません。ソースファイルの名前をコンパイルするファイルのリストに追加するかどうかを決定するために,ビルドプロセスはMATLABパスでsfcnname. cppを検索します。ソースファイルを見つけると,ビルドプロセスはそのソースファイル名をmakefileに追加します。パスでsfcnname. cppが見からないと,ビルドプロセスはファル名sfcnname. cがMATLABパス上にあるかどうかにかかわらず,この名前をmakefileに追加します。

    メモ

    金宝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_mainsfun_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.mAPIを使用します。

TLCラブラリ関数の使用

TLCファ▪▪ルを記述して—functionを▪▪ンラ▪▪ン化する場合,TLCラ▪▪ブラリ関数LibAddToModelSourcesを使用してソスファル名をビルドプロセスに追加できます。詳細にいては,LibAddSourceFileCustomSection(文件,builtInSection, newSection)を参照してください。

メモ

この関数は完全なソスファルパスの指定をサポトしません。makefileの実行時にコードジェネレーターが追加のソースファイルを検出できるものとみなします。

その他に,LibAddToCommonIncludesというTLCラブラリ関数が役立ます。この関数は,生成された模型. hヘッダファルにS-Functionヘッダファルを含めるために,# includeステ,トメントで使用します。詳細にいては,LibAddToCommonIncludes (incFileName)を参照してください。

他の場所にあるソースファイルの指定やライブラリまたはオブジェクトファイルの指定など,複雑なs函数ファイルの依存関係では,生成されたmakefileをrtwmakecfg。m APIを使用してカスタマaaplズで説明されているようにrtwmakecfg.mAPIを使用します。

S-Functionラ▪▪ブラリのプリコンパ▪▪ル

Matlab言語関数rtw_precompile_libsを使用することによって,モデルに適した新しいまたは更新したs函数ライブラリ(墨西哥人ファイル)をプリコンパイルできます。この関数は、指定されたモデルおよびライブラリ ビルド仕様を使用し、ライブラリを作成してプリコンパイル済みのライブラリ フォルダーにライブラリを配置します。

s函数ライブラリをプリコンパイルすることによって,システムビルドを最適化できます。プリコンパイル済みのライブラリが存在する場合,ビルドプロセスはその後のビルドからライブラリのコンパイルを省略できます。多数のラesc escブラリを使用するモデルでは,ビルドプロセスでの時間短縮は大きな意味があります。

rtw_precompile_libsを使用するには,次を行います。

  1. システムプラットフォームに基づいたファイルタイプの拡張子など,ライブラリファイルの接尾辞を設定します。

    プラットフォムのタプを特定したら,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
  2. プリコンパ@ @ル済みのラ@ @ブラリフォルダ@ @を設定します。

    次のメソッドのいずれかを使用して,プリコンパ@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @

    TargetPreCompLibLocationmakeInfo.precompileの両方を設定する場合は,TargetPreCompLibLocationの設定内容が優先されます。

    次のコマンドは,モデルmy_modelのプリコンパル済みラブラリフォルダを,現在の作業フォルダの下にあるフォルダ自由に設定します。

    set_param (my_model TargetPreCompLibLocation, fullfile (pwd, '自由'));

    メモ

    プリコンパイル済みライブラリファイルのターゲットフォルダーとターゲットライブラリファイルの接尾辞の両方を設定する場合,ビルドプロセスは,ビルド処理中にプリコンパイル済みライブラリファイルが失われているかどうかを検出します。

  3. ビルド仕様を定義します。

    ビルド仕様を定義する構造体を設定します。次の表では,構造体で定義できるフィ,ルドを説明します。これらのフィ,ルドはrtwmakecfgDirsを除き,オプションです。

    フィ,ルド 説明

    rtwmakecfgDirs

    プリコンパ▪▪ルするラ▪▪ブラリのrtwmakecfgファiphones cell配列。この関数はrtwmakecfgが返すのと同様に,makeInfo.library名字要素と位置要素を使用して,プリコンパaaplル済みラaaplブラリの名前と位置を指定します。TargetPreCompLibLocationパラメタをラブラリフォルダを指定するように設定すると,その設定はmakeInfo.library.Locationの設定を上書きします。

    メモ:指定したモデルは,rtwmakecfgファ▪▪ルで指定されるプリコンパ▪▪ル済みラ▪▪ブラリを使用するブロックを含んでいなければなりません。これは,ビルドプロセスでライブラリを使用する場合に限って,TMFからmakefileへの変換でライブラリの規則が生成されるからです。

    libSuffix

    各ラescブラリの名前(_vc.libなど)に追加する,ファaapl .ルタaapl .プの拡張子を含むサフィックスを指定する文字ベクトル。文字ベクトルはピリオド(.)を含まなければなりません。このフィ,ルドかTargetLibSuffixパラメ,タ,を使用してサフィックスを設定します。両方の方法で接尾辞を指定した場合はこのフィ,ルドの設定内容がTargetLibSuffixの設定によってオバラドされます。

    intOnlyBuild

    布尔值フラグ。真正に設定すると,フラグは,ライブラリが整数コードからしかコンパイルされないようにライブラリが最適化されることを示します。このフィルドはertタゲットにのみ適用されます。

    makeOpts

    rtwMakeコマンドラ@ @ンに含まれるオプションを指定する文字ベクトル。

    addLibs

    関数rtwmakecfgで指定されない作成対象のラesc escブラリを指定する構造体のcell配列。各構造体は,文字配列である2のフィルドで定義されなければなりません。

    • 库名-サフィックスのないラie浏览器ブラリ名

    • libLoc—プリコンパaapl . exeル済みラaapl . exeブラリの位置

    ターゲットmakefile (TMF)では,他のライブラリと,ライブラリのビルド方法を指定できます。このフィルドを使用して,それらのラブラリをプリコンパルします。

    次のコマンドはビルド仕様build_specを設定します。これによって,コンパsrc内に存在することが示されます。

    Build_spec = [];build_spec。rtwmakecfgDirs = {fullfile(pwd,'src')};
  4. rtw_precompile_libsを呼び出します。

    この呼び出しでは,プリコンパイル済みのライブラリとビルド仕様を作成するモデルを指定しなければなりません。次に例を示します。

    rtw_precompile_libs (my_model build_spec);

関連するトピック