メインコンテンツ

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

コード生成パラメーター構成オブジェクトのプロパティ説明
ヘッダー ファイル

CustomHeaderCode

MATLAB コードから生成された各 C/C++ ヘッダー ファイルの最上部近くにコードが表示されるように指定します。

追加インクルード ディレクトリ

CustomInclude

生成されたコードのコンパイル中にインクルード パスに追加するインクルード ディレクトリのリストを指定します。絶対パスまたはプロジェクト フォルダーへの相対パスを指定します。

追加ライブラリ

CustomLibrary

生成コードにリンクするスタティック ライブラリ ファイルまたはオブジェクト ファイルのリストを指定します。
追加ソース ファイル

CustomSource

コンパイルして生成コードにリンクするソース ファイルのリストを指定します。ビルド プロセスは最初に現在のフォルダー内でソース ファイルを探してから、CustomInclude に指定したインクルード フォルダー内で探します。

ソース ファイル

CustomSourceCode

生成された 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

参考

| | | | | |

トピック