外部 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 Coder アプリでカスタマイズするには、コード構成パラメーターを使用するか、コマンド ラインでコード生成構成オブジェクトのプロパティを使用します。以下の設定を使用して、外部ファイルの場所、カスタム ソース コード、およびその他のビルド パラメーターを指定できます。
コード生成パラメーター | 構成オブジェクトのプロパティ | 説明 |
---|---|---|
ヘッダー ファイル |
| 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
参考
codegen
| coder.cinclude
| coder.updateBuildInfo
| coder.config
| coder.CodeConfig
| coder.MexCodeConfig
| coder.ExternalDependency