codegen
コマンドの等価な MATLAB Coder プロジェクトへの変換
codegen
コマンドを -toproject
オプション付きで使用すると、codegen
コマンドを等価な MATLAB® Coder™ プロジェクト ファイルに変換できます。その後、codegen
コマンドをもう一度使用するか MATLAB Coder アプリを使用して、プロジェクト ファイルからコードを生成することができます。
たとえば、入力引数 input_arguments
をもつ codegen
コマンドを、プロジェクト ファイル myProject.prj
に変換するには、以下を実行します。
codegen input_arguments -toproject myProject.prj
codegen
の入力引数には以下を含みます。
エントリポイント関数の名前
-args
オプションを使用して指定された入力型の定義構成オブジェクトで指定されたパラメーターを含む、コード生成オプション
生成されるコードに含めるカスタム ソース ファイルの名前
-toproject
オプションを使用して、不完全な codegen
コマンドをプロジェクト ファイルに変換することもできます。たとえば、構成オブジェクト cfg
に格納されているコード生成パラメーターのみが含まれるプロジェクト ファイル myProjectTemplate.prj
を作成するには、次を実行します。
codegen -config cfg -toproject myProjectTemplate.prj
myProjectTemplate.prj
には、エントリポイント関数や入力型の指定が含まれません。そのため、このプロジェクト ファイルからコードを生成することはできません。MATLAB Coder アプリで myProjectTemplate.prj
を開いて、コード生成に使用できる完全なプロジェクト ファイルを作成するためのテンプレートとして使用できます。メモ
codegen
コマンドを -toproject
付きで実行すると、コードは生成されません。プロジェクト ファイルが作成されるだけです。
例: 完全な codegen
コマンドのプロジェクト ファイルへの変換
2 つの値の合計を返す MATLAB 関数 myadd
を定義します。
function y = myadd(u,v) %#codegen y = u + v; end
スタティック ライブラリを生成するための coder.CodeConfig
オブジェクトを作成します。TargetLang
を 'C++'
に設定します。
cfg = coder.config('lib'); cfg.TargetLang = 'C++';
MATLAB コマンド ラインで、codegen
コマンドを作成し、実行します。エントリポイント関数として myadd
を指定します。myadd
への入力を、次元が無制限の double
型可変サイズ行列として指定します。コード構成オブジェクトとして cfg
を指定します。codegen
コマンドを myadd_project.prj
という名前をもつ等価の MATLAB Coder プロジェクト ファイルに変換するために、-toproject
オプションを含めます。
codegen -config cfg myadd -args {coder.typeof(1,[Inf,Inf]),coder.typeof(1,[Inf,Inf])} -toproject myadd_project.prj
Project file 'myadd_project.prj' was successfully created.
Open Project
コード ジェネレーターによってプロジェクト ファイル myadd_project.prj
が現在の作業フォルダーに作成されます。-toproject
オプションを指定して codegen
を実行しても、コードは生成されません。プロジェクト ファイルが作成されるだけです。
もう一度 codegen
コマンドを使用して、myadd_project.prj
からコードを生成します。
codegen myadd_project.prj
コード ジェネレーターによって C++ スタティック ライブラリ関数 myadd
が
フォルダーに作成されます。ここで、work
\codegen\lib\myadd
が現在の作業ディレクトリです。work
例: 不完全な codegen
コマンドのテンプレート プロジェクト ファイルへの変換
スタティック ライブラリを生成するための coder.CodeConfig
オブジェクトを作成します。TargetLang
を 'C++'
に設定します。
cfg = coder.config('lib'); cfg.TargetLang = 'C++';
MATLAB コマンド ラインで、codegen
コマンドを作成し、実行します。コード構成オブジェクトとして cfg
を指定します。codegen
コマンドを myProjectTemplate.prj
という名前をもつ等価の MATLAB Coder プロジェクト ファイルに変換するために、-toproject
オプションを含めます。
codegen -config cfg -toproject myProjectTemplate.prj
Project file 'myProjectTemplate.prj' was successfully created.
Open Project
これで、MATLAB Coder アプリで myProjectTemplate.prj
を開いて、コード生成に使用できる完全なプロジェクト ファイルを作成するためのテンプレートとして使用できるようになりました。
制限
codegen
コマンドを -toproject
オプション付きで使用するとき、次の制限事項が適用されます。
coder.EmbeddedCodeConfig
オブジェクトのCodeTemplate
パラメーターのプロジェクト ファイルへのエクスポートはサポートされていません。MEX 関数を生成するための
codegen
コマンドにおいて、fi
(Fixed-Point Designer) オブジェクトobj
である定数入力を定義するためにcoder.Constant
が使用されていると仮定します。特定の
fi
オブジェクト プロパティが他のプロパティによって有効化されています。fi
オブジェクトを作成するとき、これらのプロパティは明示的に変更しない限り、それぞれの既定値に設定されます。obj
で、有効化されていない 1 つ以上のプロパティを既定以外の値に設定します。Set fi Object Properties (Fixed-Point Designer)を参照してください。-toproject
オプションを使用して、このcodegen
コマンドをプロジェクト ファイルに変換します。プロジェクト ファイルをビルドし、MEX 関数を生成します。生成される MEX 関数にobj
を定数入力引数として渡し、MEX を実行すると、MEX はエラーをスローすることがあります。この問題を解決するには、有効化されていない
obj
のプロパティを、MEX 関数に渡す前に、それぞれの既定値に設定しなければなりません。これを行うには、新しいfi
オブジェクトobj_new
を定義します。a = mat2str(obj); obj_new = eval(a);
obj_new
を生成される MEX 関数に定数入力として渡します。