最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

ビルド アプローチの選択およびビルド プロセスの設定

コード ジェネレーターは、Simulink® モデルから生成するコードの作成 (コンパイルおよびリンクの設定) に関して、以下のアプローチをサポートしています。

  • "ツールチェーン" — makefile を生成し、カスタム ツールチェーンをサポートするビルド プロセス。この方法では以下を行います。

    • ツールチェーン情報オブジェクトを使用してビルド プロセスを制御できます。これらのオブジェクトは MATLAB スクリプトを使用して定義できます。

    • モデル参照、SIL、PIL をサポートします。

    • Simulink Coder™、Embedded Coder®、および MATLAB® Coder をサポートします。

  • "テンプレート makefile" — 指定したツールチェーンでテンプレート makefile を使用するビルド プロセス。この方法では以下を行います。

    • オプションで、ツールチェーン情報オブジェクトを使用します。

    • モデル参照、SIL、PIL をサポートします。

    • Simulink Coder および Embedded Coder をサポートします。

システム ターゲット ファイルコンフィギュレーション パラメーターを使用して、モデルのビルド プロセスを選択できます。[システム ターゲット ファイル] を次のように設定する場合:

  • [ert.tlc][ert_shrlib.tlc][grt.tlc] またはツールチェーンに準拠する任意のシステム ターゲット ファイルに対して、既定ではビルド プロセスはツールチェーン アプローチを使用します。

  • ツールチェーンに準拠しない任意のシステム ターゲット ファイル。ビルド プロセスはテンプレート makefile アプローチ (Embedded Coder)を使用します。

次のコマンドを使用して、ツールチェーン アプローチをテンプレート makefile アプローチに切り替えることができます。

set_param(model, 'MakeCommand', 'make_rtw TMF=1')

ツールチェーン アプローチ

[システム ターゲット ファイル] を以下に設定すると、[ツールチェーン設定][ビルド プロセス] の下に表示されます。

  • grt.tlc ― 汎用リアルタイム ターゲット

  • ert.tlc — Embedded Coder (Embedded Coder 製品が必要)

  • ert_shrlib.tlc — Embedded Coder (ホストベースの共有ライブラリ ターゲット) (Embedded Coder が必要)

  • ツールチェーンに準拠したシステム ターゲット ファイル (ERT ベースの場合、Embedded Coder が必要)

ツールチェーンに準拠したシステム ターゲット ファイルの詳細については、カスタム ターゲットを使用したツールチェーン アプローチのサポートを参照してください。

[ツールチェーン設定] には、次のコンフィギュレーション パラメーターが含まれます。

  • ツールチェーン–– 生成コードをビルドするサードパーティ ソフトウェア ツールのコレクションを指定します。ツールチェーンには、コンパイラ、リンカー、アーカイバー、およびビルド前またはビルド後の他のツールを含めることができます。

    [ツールチェーン] の既定値は、[Automatically locate an installed toolchain] です。[ツールチェーン] パラメーターは、特定されたツールチェーンの名前を、[Automatically locate an installed toolchain] のすぐ下に表示します。

    [ツールチェーンの検証] ボタンをクリックして、ツールチェーンが存在することと、コード ジェネレーターがそのツールチェーンを使用するために必要な情報をもっていることを確認します。結果の検証レポートには選択されたツールチェーンのパス/失敗が示され、解決すべき問題が特定されます。

  • ビルド構成–– 最適化設定を指定します。既定では、[ビルド構成][Faster Builds] に設定されます。また、[Faster Runs][Debug] および [Specify] を選択することもできます。[Specify] を選択すると、ツール チェーンのオプションをカスタマイズできます。[適用] をクリックすると、カスタム ツールチェーン設定が現在のモデルに適用されます。

メモ

テンプレート makefile アプローチを使用している次のシステム ターゲット ファイルは同じ名前ですが、ツールチェーン アプローチを使用しているシステム ターゲット ファイルとは異なる説明になっています。

  • ert.tlc — Embedded Coder の Visual C/C++ ソリューション ファイルを作成する

  • grt.tlc — Simulink Coder の Visual C/C++ ソリューション ファイルを作成する

混乱を避けるため、[参照] をクリックしてシステム ターゲット ファイルを選択し、各ファイルの説明を確認してください。

ツールチェーン アプローチを使用するためのモデルのアップグレード

R2013b より前に作成された、以下のシステム ターゲット ファイルを使用するモデルを開くと、ソフトウェアはモデルのアップグレードを試みます。アップグレードによって、テンプレート makefile 設定の使用からツールチェーン設定の使用へと構成が変更されます。

  • ert.tlc — Embedded Coder

  • ert_shrlib.tlc — Embedded Coder (ホストベースの共有ライブラリ ターゲット)

  • grt.tlc ― 汎用リアルタイム ターゲット

メモ

ツールチェーン アプローチを使用するために、カスタムのシステム ターゲット ファイルを使用してモデルをアップグレードする場合は、カスタム ターゲットを使用したツールチェーン アプローチのサポートを参照してください。

一部のモデル コンフィギュレーション パラメーターの値によって、ツールチェーン設定を使用するモデルのアップグレードが回避されます。以下の手順は、アップグレード プロセスを完了する方法を示しています。

モデルのアップグレードについて検討し、ツールチェーン ビルド アプローチを使用する。こうした手順は必要ありません。引き続き、アップグレードされていないモデルからコードを生成できます。

メモ

ソフトウェアは、以下のシステム ターゲット ファイルを使用しているモデルをアップグレードしません。

  • ert.tlc — Embedded Coder の Visual C/C++ ソリューション ファイルを作成する

  • grt.tlc — Simulink Coder の Visual C/C++ ソリューション ファイルを作成する

モデルがアップグレードされたかどうかを確認するには、以下を行います。

  1. [ツールチェーン] および [ビルド構成] コンフィギュレーション パラメーターが指定されている場合、モデルはアップグレードされています。

    [makefile の生成][make コマンド][テンプレート makefile] などの [makefile の設定] パラメーターが指定されている場合、モデルはアップグレードされていません。

[ファイル][名前を付けて保存] を使用してモデルの作業コピーを作成することから始めます。このアクションにより、元のモデルとコンフィギュレーション パラメーターが参照に備えて保持されます。

アップグレード アドバイザーを使用してモデルのアップグレードを試みます。

  1. [モデル化] タブの [実行と管理] セクションで、[アップグレード アドバイザー] を選択します。

  2. アップグレード アドバイザーで、[ツールチェーン アプローチを使用して生成コードをビルドするように、モデルをチェックして更新します] を選択し、[このチェックを実行] をクリックします。

  3. 推奨アクションを実行するか、[モデルの更新] をクリックするか、あるいはその両方を実行します。

アップグレード アドバイザーを使用してモデルをアップグレードできない場合は、以下のパラメーターの 1 つ以上がここで示す既定値に設定されていません。

  • コンパイラ最適化レベル最適化オフ (高速にビルド)

  • makefile の生成 — 有効

  • テンプレート makefile — システム ターゲット ファイルに固有のテンプレート makefile

  • make コマンド — 引数をもたない make_rtw

モデルをアップグレードできない場合があります。次の手順を試してみてください。

  • [makefile の生成] が無効な場合は、アップグレードできません。ただし、これを有効にし、アップグレード アドバイザーを使用してモデルのアップグレードを試行できます。

  • [コンパイラ最適化レベル][最適化オン (高速に実行)] に設定されている場合は、次の手順に従います。

    1. [コンパイラ最適化レベル][最適化オフ (高速にビルド)] に設定します。

    2. アップグレード アドバイザーを使用してモデルをアップグレードします。

    3. [ビルド構成][Faster Runs] に設定します。

  • [コンパイラ最適化レベル][カスタム] に設定されている場合は、次の手順に従います。

    1. [カスタム コンパイラ最適化フラグ] をテキスト ファイルにコピーします。

    2. [コンパイラ最適化レベル][最適化オフ (高速にビルド)] に設定します。

    3. アップグレード アドバイザーを使用してモデルをアップグレードします。

    4. [ビルド構成][Specify] に設定します。

    5. 同じ最適化を実行するために、コンパイラ オプションを編集します。

  • [テンプレート makefile] がカスタマイズされたテンプレート makefile を使用している場合、アップグレードできません。ただし、以下のような解決方法があります。

    1. システム ターゲット ファイルの既定の makefile を使用するように、[テンプレート makefile] を更新します。

      メモ

      既定の makefile 名を取得するには、[システム ターゲット ファイル] を変更して [適用] をクリックし、それを元に戻して、再度 [適用] をクリックします。

    2. アップグレード アドバイザーを使用してモデルをアップグレードします。

    3. テンプレート makefile にコンパイラ最適化フラグなどのビルド ツール オプションが含まれている場合は、[ビルド構成][Specify] に設定して、オプションを更新します。

    4. テンプレート makefile がカスタム ビルド ツールを使用している場合は、カスタム ツールチェーンの登録での説明に従い、カスタム ツールチェーンを作成して登録します。その後、カスタム ツールチェーンを使用するように [ツールチェーン] パラメーターを設定します。

      メモ

      カスタム ツールチェーンの登録後、カスタム ツールチェーンを使用するように [ツールチェーン] を更新します。

    5. テンプレート makefile にカスタム ルールとロジックが含まれる場合、これらのカスタマイズはアップグレードされたモデルには適用できません。

テンプレート makefile アプローチ

[システム ターゲット ファイル] が、テンプレート makefile アプローチを使用する [tlc] ファイルに設定されている場合、ソフトウェアは [コンパイラ最適化レベル][makefile の生成][make コマンド] および [テンプレート makefile] の各パラメーターを表示します。

makefile を生成するかどうかの指定

[makefile の生成] オプションはビルド プロセスにモデルの makefile を生成させるかどうかを指定します。既定の設定では、ビルド プロセスは makefile を生成します。[makefile の生成] をオフにすることによって、たとえば、makefile に基づかないカスタム ビルド プロセスをサポートするために、makefile の生成を抑制します。このパラメーターをオフにすると、次が適用されます。

make コマンドの指定

テンプレート makefile ベースの各システム ターゲット ファイルには、関連する make コマンドがあります。コード ジェネレーターはこの内部 MATLAB コマンドを使用して、ビルド プロセスを制御します。コマンドは [make コマンド] フィールドに表示され、ビルドの開始時に実行されます。

ほとんどのシステム ターゲット ファイルが既定のコマンド make_rtw を使用します。サードパーティ製のシステム ターゲット ファイルは、別の make コマンドを指定する可能性があります。ベンダーのドキュメンテーションを参照してください。

make コマンドの名前に加えて、[make コマンド] フィールドに makefile オプションを指定できます。これらのオプションには、コンパイラ固有のオプション、インクルード パス、その他のパラメーターが含まれる可能性があります。ビルド プロセスにより make ユーティリティが呼び出されると、これらのオプションは make コマンド ラインに渡され、さらにコンパイラに渡される全体のフラグに追加されます。

テンプレート makefile と make オプションにはサポートされている各コンパイラで使用できる [make コマンド] のオプションが記載されています。

テンプレート makefile の指定

[テンプレート makefile] フィールドには次のような機能があります。

  • システム ターゲット ファイル ブラウザーを使ってシステム ターゲット ファイルを選択した場合、このフィールドには MATLAB 言語ファイルの名前が表示されます。このファイルはその開発環境に適したテンプレート makefile を選択します。たとえば、モデル コンフィギュレーション パラメーター: コード生成[テンプレート makefile] フィールドに grt_default_tmf が表示され、ビルド プロセスで grt_default_tmf.m が実行されることを示します。

    テンプレート makefile と make オプションには、ビルド プロセスがテンプレート makefile を選択するときに使用するロジックの詳細が説明されています。

  • 代わりに、このフィールドには特定のテンプレート makefile の名前 (拡張子も含む) またはテンプレート makefile を返す MATLAB 言語ファイルの名前を明示的に入力することもできます。システム ターゲット ファイル ブラウザーに表示されないシステム ターゲット ファイルを使用している場合は、この方法を使用します。たとえば、カスタム システム ターゲット ファイル用に独自のテンプレート makefile を記述した場合は、この方法を使用します。

独自のテンプレート makefile を指定する場合、必ずファイル名に拡張子を付けてください。拡張子を省略すると、ビルド プロセスは .m を拡張子にもつファイル (MATLAB 言語ファイル) を探して実行しようとします。そのテンプレート make ファイル (またはテンプレート make ファイルを戻す MATLAB 言語ファイル) は MATLAB のパス上になければなりません。MATLAB のパス上にそのファイルがあるかどうかを調べるには、MATLAB コマンド ウィンドウで次のコマンドを入力します。

which tmf_filename

テンプレート makefile とツールチェーンの関連付け

テンプレート makefile ビルド プロセスに対してツールチェーンを指定します。以下の例では、最小限のツールチェーンの定義を提供します。また、ert_unix.tmf または ert_vcx64.tmf のコピーであるテンプレート makefile にツールチェーンを関連付ける方法を示します。

ツールチェーン定義ファイルに対して以下のコードを使用します。

function tc = minimalToolchainForTMF
% Create a toolchain object
tc = coder.make.ToolchainInfo('Name', 'Minimal Toolchain for TMF Build');

% Specify that the linker requires a response file instead of 
% including all object file modules on the linker command line
tc.addAttribute('RequiresCommandFile', true);

if ispc
    objExt = '.obj';
else
    objExt = '.o';
end

% Specify source file and object file extension used by the C compiler
tool = tc.getBuildTool('C Compiler');
tool.setFileExtension(  'Source', '.c');
tool.setFileExtension(  'Header', '.h');
tool.setFileExtension(  'Object',   objExt);

% Specify source file and object file extension used by the C++ compiler
tool = tc.getBuildTool('C++ Compiler');
tool.setFileExtension(  'Source', '.cpp');
tool.setFileExtension(  'Header', '.hpp');
tool.setFileExtension(  'Object',   objExt);

ert_unix.tmf または ert_vcx64.tmf のコピーをテンプレート makefile として使用します。

copyfile(fullfile(matlabroot,'rtw','c','ert','ert_vcx64.tmf'), 'ert_copy.tmf')

テンプレート makefile (たとえば ert_copy.tmf) で、TOOLCHAIN_NAME マクロを編集します。

TOOLCHAIN_NAME = "Minimal Toolchain for TMF Build"

ツールチェーンをテンプレート makefile に関連付けます。

  1. ToolchainInfo オブジェクトの tc を生成するツールチェーン定義ファイルを実行します。

    tc = minimalToolchainForTMF;

  2. ToolchainInfo オブジェクトを MAT ファイルに保存します。

    save('tcMinimal','tc')

  3. ツールチェーンを RTW.TargetRegistry に登録します。

    1. 以下のコードを rtwTargetInfo.m ファイルに配置します。

      function rtwTargetInfo(tr)
      tr.registerTargetInfo(@loc_createToolchain);
      end
      
      function config = loc_createToolchain
      config(1) = coder.make.ToolchainInfoRegistry;
      config(1).Name = 'Minimal Toolchain for TMF Build';
      config(1).FileName = fullfile(fileparts(mfilename('fullpath')),...
          'tcMinimal.mat');
      config(1).TargetHWDeviceType = {'*'};
      config(1).Platform =  {computer('arch')};
      end

    2. ファイルを現在の作業フォルダーまたは MATLAB 検索パス上にあるフォルダーに保存します。

    3. TargetRegistry をリセットします。

      RTW.TargetRegistry.getInstance('reset');

テンプレート makefile をモデルに関連付けて、モデルをビルドします。

set_param(model, 'TemplateMakefile', 'ert_copy.tmf');
rtwbuild(model);

コード生成の TLC の指定

Target Language Compiler (TLC) はコード ジェネレーターに不可欠な部分です。これにより、生成されたコードをカスタマイズできます。カスタマイズによって、プラットフォーム固有のコードを生成したり、実行速度、コード サイズ、保持する既存のメソッドとの互換性用に独自のアルゴリズムの変更を組み込むこともできます。詳細は、Target Language Compiler Overviewを参照してください。

コード生成用に指定する TLC オプションは、生成された HTML コード生成レポートの概要セクションに表示されます。

メモ:

TLC コマンド ライン オプションを指定しても、make コマンド ラインにフラグは追加されません。

関数 set_param の呼び出しで TLCOptions モデル パラメーターを使用してコードを生成するために、TLC (Target Language Compiler) コマンド ライン オプションと引数を指定できます。たとえば、以下のようになります。

>> set_param(gcs,'TLCOptions','-p0 -aWarnNonSaturatedBlocks=0')

TLC の一般的用途には、以下のようなものがあります。

  • -aVarName=1 (TLC 変数の宣言または値の代入)

  • -IC:\Work (インクルード パスの指定)

  • -v (デバッグなどで TLC 処理からの詳細出力を取得)

生成されたコードの再コンパイルでのチェックサムの使用

GenerateMakefile'on' に設定し、GenCodeOnly'off' に設定してモデルをビルドすると、ソフトウェアは makefile を生成し、その makefile を実行して、生成されたコードをコンパイルします。コンパイルが完了すると、ソース ファイルとコンフィギュレーション データのチェックサムが作成され、保存されます。

モデルを作成するときに前回のビルドのチェックサムが利用できる場合は、次のようになります。

  1. ソフトウェアではチェックサムを使用して、ソース ファイルとコンフィギュレーション データが前回のビルドと異なるかどうか判断します。

  2. ソフトウェアで違いが検出されると、次が行われます。

    • makefile の再作成。

    • 生成されたコードの再コンパイル。

ビルド プロセスでテンプレート makefile を使用する場合は、次のテキストをテンプレート makefile に追加してチェックサムの使用を無効にすることができます。

DO_NOT_USE_CHECKSUMS=1
この場合、ソフトウェアはファイルのタイムスタンプを使用して、生成されたコードを再コンパイルするかどうか判断します。

関連するトピック