ビルド プロセスのカスタマイズ
アプリケーションによっては、C/C++ ソース コード生成後のコンパイル前に発生するビルド プロセスの内容を制御する場合があります。たとえば、コンパイラまたはリンカー オプションを指定できます。生成されたすべてのソース ファイルを取得して変更し、著作権の免責事項を追加できます。ビルド プロセスをさまざまな方法で制御できます。次の方法でビルド プロセスをカスタマイズします。
関数
coder.updateBuildInfo
を使用する。RTW.BuildInfo
オブジェクトのメソッドを使用する。coder.ExternalDependency
クラスを使用して、ビルド情報を変更する。PostCodeGenCommand
構成プロパティによって実行されるスクリプトまたは関数を使用して、ビルド情報を変更する。このスクリプトまたは関数は、コード生成後のコマンドと呼ばれます。
これらの方法はすべて、コードを作成するために生成および使用される makefile を変更することで機能します。ベスト プラクティスとして、最初の 3 つの方法 (coder.updateBuildInfo
、RTW.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.updateBuildInfo
と coder.ExternalDependency
を使用してビルド プロセスをカスタマイズします。さらに高い柔軟性を提供する 3 番目の方法は、コード生成後のコマンドです。コード生成後のコマンドは、PostCodeGenCommand
構成オブジェクト プロパティによって実行される関数またはスクリプトです。コード生成構成オブジェクトを使用して、コマンドを設定します (coder.MexCodeConfig
、coder.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 アプリからコード生成後のコマンドを設定するには、以下を実行します。
[生成] ダイアログ ボックスを開くために、[コード生成] ページの [生成] 矢印 をクリックします。
[詳細設定] をクリックします。
[カスタム コード] タブで [コード生成後のコマンド] パラメーターを設定します。
コード生成後のコマンドがユーザー定義の関数を呼び出す場合は、関数が MATLAB パス上にあることを確認してください。ビルド プロセスがコマンド内で使用する関数を見つけることができない場合は、プロセスが失敗します。
参考
coder.MexCodeConfig
| coder.CodeConfig
| coder.EmbeddedCodeConfig
| coder.updateBuildInfo
| coder.ExternalDependency