外部 C/C++ コードのビルドの構成
外部 C/C++ コードを MATLAB® に統合するには、コード ジェネレーターに対して外部ファイルを提供しなければなりません。これらのファイルは、生成コードのビルドに使用されるソース ファイル、ヘッダー ファイル、オブジェクト ファイルおよびライブラリ ファイルで構成されています。
ビルドの構成は、コマンド ライン、関数内、またはコード生成構成オブジェクト プロパティを設定することで実行できます。迅速かつ簡単にコードを生成するには、コマンド ラインでファイルを指定します。他のプロジェクトやコード展開用に関数を事前構成する場合は、関数内でビルドを構成します。構成オブジェクトは標準化されたビルド プロパティ セットを提供します。MATLAB Coder™ アプリを使用して、または coder.ExternalDependency
から派生するクラスを使用して外部ファイルを指定することもできます。詳細については、外部 C/C++ コードのインターフェイスの開発を参照してください。
コード生成用の外部ファイルの提供
coder.ceval
を使用して C 関数 myCFn
を呼び出す関数のコードを生成するとします。myCFn
の外部ソース ファイルおよびヘッダー ファイルは、フォルダー C:\custom
内に存在します。以下のコマンドを使用します。
codegen myMatlabFn C:\custom\myCFn.c C:\custom\myCFn.h
関数内からのビルドの構成
この例では、MATLAB® 関数内から外部 C/C++ コードのビルドを構成する方法を説明します。他のプロジェクトと簡単に統合できるように、関数内でビルドを構成します。
最上位の MATLAB 関数 myFn
があるとします。
function [out] = myFn(in) %#codegen y = mySubFn(in); out = y + 10; end
この関数は、外部 C コード foo.c
を使用する別の関数 mySubFn
を呼び出します。coder.updateBuildInfo
と coder.cinclude
を使用することで、すべての必要な外部コードの依存関係を mySubFn
内から設定します。
function [y] = mySubFn(x) %#codegen coder.cinclude('foo.h'); coder.updateBuildInfo('addSourceFiles', 'foo.c'); % Pre-initialize y to double type. y = 0; y = coder.ceval('foo',x); end
追加のビルド設定を構成したり、コマンド ラインで外部ファイル入力を指定したりすることなく、mySubFn
を含むコードを生成することができます。最上位の関数 myFn
のコードを生成するには、以下を入力します。
codegen myFn -args {5} -report
Code generation successful: To view the report, open('codegen/mex/myFn/html/report.mldatx')
構成オブジェクトを使用したビルドの構成
コード生成構成オブジェクトのプロパティを設定することで、ビルドをカスタマイズします。以下のプロパティを使用して、外部ファイルの場所、カスタム ソース コードおよびその他のビルド パラメーターを指定することができます。
カスタム コード プロパティ | 説明 |
---|---|
| MATLAB コードから生成された各 C/C++ ヘッダー ファイルの最上部近くにコードが表示されるように指定します。 |
| 生成されたコードのコンパイル中にインクルード パスに追加するインクルード ディレクトリのリストを指定します。絶対パスまたはプロジェクト フォルダーへの相対パスを指定します。 |
| 生成コードにリンクするスタティック ライブラリ ファイルまたはオブジェクト ファイルのリストを指定します。 |
| コンパイルして生成コードにリンクするソース ファイルのリストを指定します。ビルド プロセスは最初に現在のフォルダー内でソース ファイルを探してから、 |
| 生成された C/C++ ソース ファイルの最上部近く、関数の外側にコードが表示されるように指定します。C 静的関数の定義は指定しないでください。 |
たとえば、スタンドアロン コードの構成オブジェクトを宣言し、以下のプロパティを指定します。
cfg = coder.config('lib'); cfg.CustomInclude = ["C:\custom\src", "C:\custom\lib"]; cfg.CustomSource = "cfunction.c"; cfg.CustomLibrary = ["chelper.obj", "clibrary.lib"]; cfg.CustomSourceCode = '#include "cgfunction.h"';
-config
引数を指定して codegen
コマンドを使用することで、コマンド ラインでプロパティを適用します。
codegen -config cfg myMatlabFn
MATLAB Coder アプリを使用したビルドの構成
MATLAB Coder アプリを開き、[コード生成] の手順に進みます。
[コード生成] ページで [生成] ダイアログ ボックスを開くために [生成] 矢印 をクリックします。
[詳細設定] をクリックします。
[カスタム コード] タブで、ビルド構成設定を選択します。入力フィールドに関する情報を表示するには [ヘルプ] をクリックします。
参考
codegen
| coder.cinclude
| coder.updateBuildInfo
| coder.config
| coder.CodeConfig
| coder.MexCodeConfig
| coder.ExternalDependency