codegen コマンドの等価な MATLAB Coder プロジェクトへの変換
codegen コマンドを -toproject オプション付きで使用すると、codegen コマンドを等価な MATLAB® Coder™ プロジェクト ファイルに変換できます。その後、codegen コマンドをもう一度使用するか MATLAB Coder アプリを使用して、プロジェクト ファイルからコードを生成することができます。
たとえば、入力引数 input_arguments をもつ codegen コマンドを、プロジェクト ファイル myProject.coderprj に変換するには、以下を実行します。
codegen input_arguments -toproject myProject
codegen の入力引数には以下を含みます。
エントリポイント関数の名前
-argsオプションを使用して指定された入力型の定義構成オブジェクトで指定されたパラメーターを含む、コード生成オプション
生成されるコードに含めるカスタム ソース ファイルの名前
-toproject オプションを使用して、不完全な codegen コマンドをプロジェクト ファイルに変換することもできます。たとえば、構成オブジェクト cfg に格納されているコード生成パラメーターのみが含まれるプロジェクト ファイル myProjectTemplate.coderprj を作成するには、次を実行します。
codegen -config cfg -toproject myProjectTemplate
myProjectTemplate.coderprj には、エントリポイント関数や入力型の指定が含まれません。そのため、このプロジェクト ファイルからコードを生成することはできません。MATLAB Coder アプリで myProjectTemplate.codercoderprj を開いて、コード生成に使用できる完全なプロジェクト ファイルを作成するためのテンプレートとして使用できます。メモ
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.coderprj という名前をもつ等価の MATLAB Coder プロジェクト ファイルに変換するために、-toproject オプションを含めます。
codegen -config cfg myadd -args {coder.typeof(1,[Inf,Inf]),coder.typeof(1,[Inf,Inf])} -toproject myadd_project
コード ジェネレーターによってプロジェクト ファイル myadd_project.coderprj が現在の作業フォルダーに作成されます。-toproject オプションを指定して codegen を実行しても、コードは生成されません。プロジェクト ファイルが作成されるだけです。
もう一度 codegen コマンドを使用して、myadd_project.coderprj からコードを生成します。
codegen myadd_project.coderprjコード ジェネレーターによって C++ スタティック ライブラリ関数 myadd が フォルダーに作成されます。ここで、work\codegen\lib\myadd が現在の作業ディレクトリです。work
例: 不完全な codegen コマンドのテンプレート プロジェクト ファイルへの変換
スタティック ライブラリを生成するための coder.CodeConfig オブジェクトを作成します。TargetLang プロパティを "C++" に設定します。
cfg = coder.config("lib"); cfg.TargetLang = "C++";
MATLAB コマンド ラインで、codegen コマンドを作成し、実行します。コード構成オブジェクトとして cfg を指定します。codegen コマンドを myProjectTemplate.coderprj という名前をもつ等価の MATLAB Coder プロジェクト ファイルに変換するために、-toproject オプションを含めます。
codegen -config cfg -toproject myProjectTemplate
これで、MATLAB Coder アプリで myProjectTemplate.coderprj を開いて、コード生成に使用できる完全なプロジェクト ファイルを作成するためのテンプレートとして使用できるようになりました。
制限
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 関数に定数入力として渡します。