Main Content

ビルド プロセスのカスタマイズ

アプリケーションによっては、C/C++ ソース コード生成後のコンパイル前に発生するビルド プロセスの内容を制御する場合があります。たとえば、コンパイラまたはリンカー オプションを指定できます。生成されたすべてのソース ファイルを取得して変更し、著作権の免責事項を追加できます。ビルド プロセスをさまざまな方法で制御できます。次の方法でビルド プロセスをカスタマイズします。

  • 関数 coder.updateBuildInfo を使用する。

  • RTW.BuildInfoオブジェクトのメソッドを使用する。

  • coder.ExternalDependency クラスを使用して、ビルド情報を変更する。

  • PostCodeGenCommand 構成プロパティによって実行されるスクリプトまたは関数を使用して、ビルド情報を変更する。このスクリプトまたは関数は、コード生成後のコマンドと呼ばれます。

これらの方法はすべて、コードを作成するために生成および使用される makefile を変更することで機能します。ベスト プラクティスとして、最初の 3 つの方法 (coder.updateBuildInfoRTW.BuildInfo および coder.ExternalDependency) を使用することを推奨します。これらの方法を使用することで、必要なビルド情報を使用して MATLAB® コードを事前設定できます。あるいは、コード生成後のコマンドは、独立した関数やスクリプトに基づいて、高度にカスタマイズ可能な追加の方法を提供できます。

coder.ExternalDependency クラスとコード生成後のコマンドは、ビルド情報オブジェクト buildInfo へのアクセスを提供します。buildInfo に対してビルド情報メソッドを使用して、プロジェクト、ビルド、および依存関係情報を構成できます。MATLAB Coder™ は、ビルドの開始時に RTW.BuildInfo クラスから buildInfo を作成します。このオブジェクトは MAT ファイルの buildInfo.mat に格納され、ビルド フォルダーに保存されます。

コードを生成したら、それを buildInfo.mat から読み込むことでビルド情報オブジェクトにアクセスできます。ビルド情報オブジェクトとビルド構成オブジェクト (coder.BuildConfig) を混同しないようにしてください。ビルド構成オブジェクトは、coder.ExternalDependency クラス内でビルドを構成するための特定の機能を提供します。

RTW.BuildInfo メソッド

ビルド情報オブジェクトにアクセスするか、データを書き込むには、RTW.BuildInfoメソッドを使用します。これらのメソッドを使用して、次を変更できます。

  • コンパイラ オプション

  • リンカー オプション

  • プリプロセッサ識別子の定義

  • ソース ファイルとパス

  • インクルード ファイルとパス

  • プリコンパイル済みの外部ライブラリ

  • パッケージ化オプション。

    他の開発環境向けのコードのパッケージ化を参照してください。

メソッドを呼び出すには、次の構文を使用します。

method_name(buildInfo,input_arg1,...,input_argN)

または、次のように入力することもできます。

buildInfo.method_name(input_arg1,...,input_argN)

コード生成の完了後にビルド情報オブジェクトを使用するには、生成されたコードから buildInfo.mat ファイルを読み込みます。以下に例を示します。

load(fullfile('.','raspberrypi_generated_code','buildInfo.mat'));
packNGo(buildInfo, 'fileName','copy_to_raspberrypi');

関数 coder.updateBuildInfo

関数 coder.updateBuildInfo は、MATLAB コード内からビルド プロセスをカスタマイズする場合に便利です。詳細と例については、coder.updateBuildInfo および RTW.BuildInfo のリファレンス ページを参照してください。

coder.ExternalDependency クラス

外部コードの統合を使用している場合や、同じビルド情報を使う複数の関数がある場合は、coder.ExternalDependency クラスを使用してビルド プロセスをカスタマイズします。coder.ExternalDependency クラスを使用すると、ビルド情報オブジェクトとメソッドにアクセスできます。詳細と例については、外部 C/C++ コードのインターフェイスの開発coder.ExternalDependency のリファレンス ページを参照してください。

コード生成後のコマンド

ベスト プラクティスとして、最初の 2 つの方法 coder.updateBuildInfocoder.ExternalDependency を使用してビルド プロセスをカスタマイズします。さらに高い柔軟性を提供する 3 番目の方法は、コード生成後のコマンドです。コード生成後のコマンドは、PostCodeGenCommand 構成オブジェクト プロパティによって実行される関数またはスクリプトです。コード生成構成オブジェクトを使用して、コマンドを設定します (coder.MexCodeConfigcoder.CodeConfig または coder.EmbeddedCodeConfig)。

コマンド形式結果
スクリプトスクリプトはプロジェクト (最上位の関数) 名とビルド情報へのアクセスを直接得ることができます。
関数関数はプロジェクト名とビルド情報を引数として受け取ることができます。

コード生成後のコマンドをスクリプトとして記述するには、PostCodeGenCommand をスクリプト名に設定します。変数 projectName 内のプロジェクト名や、変数 buildInfo 内の RTW.BuildInfo オブジェクトにアクセスできます。コマンド ラインに次のように入力します。

cfg = coder.config('lib');
cfg.PostCodeGenCommand = 'ScriptName';

コマンドを関数として定義すると、任意の数の入力引数を指定することができます。プロジェクト名にアクセスする場合は、引数として projectName を含めます。ビルド情報に対して変更やアクセスを行う場合は、引数として buildInfo を追加します。コマンド ラインに次のように入力します。

cfg = coder.config('lib');
cfg.PostCodeGenCommand = 'FunctionName(projectName, buildInfo)';

たとえば、ビルド情報オブジェクトをパラメーターとして取り、addLinkFlags メソッドを使用してリンカー オプションを追加する関数 setbuildargs について考えます。

function setbuildargs(buildInfo)
% The example being compiled requires pthread support.
% The -lpthread flag requests that the pthread library be included 
% in the build   
linkFlags = {'-lpthread'};
buildInfo.addLinkFlags(linkFlags);

この関数をコード生成後のコマンドとして使用するには、構成オブジェクトを作成します。この構成オブジェクトをコードの生成時に使用します。以下に例を示します。

cfg = coder.config('dll');
cfg.PostCodeGenCommand = 'setbuildargs(buildInfo)';
codegen -config cfg foo

MATLAB Coder アプリからコード生成後のコマンドを設定するには、以下を実行します。

  1. [生成] ダイアログ ボックスを開くために、[コード生成] ページの [生成] 矢印 をクリックします。

  2. [詳細設定] をクリックします。

  3. [カスタム コード] タブで [コード生成後のコマンド] パラメーターを設定します。

コード生成後のコマンドがユーザー定義の関数を呼び出す場合は、関数が MATLAB パス上にあることを確認してください。ビルド プロセスがコマンド内で使用する関数を見つけることができない場合は、プロセスが失敗します。

参考

| | | |

関連するトピック