他の開発環境向けのコードのパッケージ化
コードのパッケージ化が必要な場合
MATLAB® を含まないシステムや統合開発環境 (IDE) などの別の開発環境に生成コード ファイルを移動するには、コマンド ラインで関数 packNGo
を使用するか、MATLAB Coder™ アプリで [パッケージ] オプションを使用します。ファイルは圧縮ファイルとしてパッケージ化され、移動先では標準の zip ユーティリティを使って解凍することができます。
MATLAB Coder アプリを使用した生成コードのパッケージ化およびコマンド ラインでの生成コードのパッケージ化を参照してください。
MATLAB Coder アプリを使用した生成コードのパッケージ化
この例は、MATLAB Coder アプリ内の [パッケージ] オプションを使用して、生成コードを移動用に zip ファイルにパッケージ化する方法を示しています。既定では、MATLAB Coder は現在の作業フォルダーに zip ファイルを作成します。
ローカルの書き込み可能フォルダー (たとえば
c:\work
) で、2 つの double 入力をとる関数foo
を記述します。function y = foo(A,B) y = A + B; end
MATLAB Coder アプリを開きます。MATLAB ツールストリップの [アプリ] タブの [コード生成] の下で、MATLAB Coder アプリ アイコンをクリックします。
[ソース ファイルの選択] ページで、エントリポイント関数
foo
の名前を入力します。[次へ] をクリックして [入力の型を定義] ページに進みます。入力
A
およびB
がスカラーの double であることを指定します。[次へ] をクリックして [実行時の問題の確認] ページに進みます。実行時の問題を確認します。[実行時の問題の確認] ダイアログ ボックスで、スカラー double 入力をもつ
foo
を呼び出すコードを入力します。次に例を示します。[問題の確認] をクリックします。foo(1,2)
実行時の問題を確認するには、アプリによって MEX 関数を生成して実行します。アプリは
foo
の問題を検出しません。[次へ] をクリックして [コード生成] ページに移動します。[生成] ダイアログ ボックスで、[ビルド タイプ] を
[ソース コード]
、[スタティック ライブラリ]
、[ダイナミック ライブラリ]
または[実行可能ファイル]
に設定します。MEX ターゲット向けに生成されたコードをパッケージ化することはできません。[生成] をクリックします。[次へ] をクリックして [ワークフローの完了] ページに進みます。
[ワークフローの完了] ページで、[パッケージ] をクリックします。
[パッケージ] ダイアログ ボックスで、パッケージ ファイルの名前とパッケージ タイプを指定します。既定の設定では、アプリはプロジェクト名をパッケージ ファイル名に適用します。アプリでは、ファイルは現在の作業フォルダーに保存されます。既定の設定では、アプリは生成されたファイルをサブフォルダーのない 1 つのフォルダーとしてパッケージ化します。この例では、既定の値を使用して [保存] をクリックします。
この zip ファイルには、移動に必要な C コードおよびヘッダー ファイルが含まれています。次は含まれません。
コンパイル フラグ
定義
makefile
main 関数の例を生成してコンパイルするコード生成を設定しない場合は、メイン ファイルの例main 関数の例を使用した生成コードの組み込みを参照してください。
作業フォルダー内の
foo_pkg.zip
の内容を検査して、目的のシステムへの移動に対する準備が整っていることを確認します。使用している zip ツールによっては、パッケージを解凍せずにファイルを開いて確認できます。これで、結果の zip ファイルを目的の開発環境に移動してファイルを解凍できます。
コマンド ラインでの生成コードのパッケージ化
この例は、コマンド ラインで関数 packNGo
を使用して、生成コードを移動用に zip ファイルにパッケージ化する方法を示しています。
ローカルの書き込み可能フォルダー (たとえば
c:\work
) で、2 つの double 入力をとる関数foo
を記述します。function y = foo(A,B) y = A + B; end
関数
foo
のスタティック ライブラリを生成します (packNGo
は MEX 関数のコードをパッケージ化しません)。codegen -report -config:lib foo -args {0,0}
codegen
はコードをc:\work\codegen\lib\foo
フォルダーに生成します。buildInfo
オブジェクトを読み込みます。load('c:\work\codegen\lib\foo\buildInfo.mat')
zip ファイルを作成します。
または、次の表記を使用します。packNGo(buildInfo, 'fileName', 'foo.zip');
関数buildInfo.packNGo('fileName', 'foo.zip');
packNGo
は zip ファイルfoo.zip
を現在の作業フォルダーに作成します。この zip ファイルには、移動に必要な C コードおよびヘッダー ファイルが含まれています。次は含まれません。コンパイル フラグ
定義
makefile
main 関数の例を生成してコンパイルするコード生成を設定しない場合は、メイン ファイルの例main 関数の例を使用した生成コードの組み込みを参照してください。
この例では、ファイル名のみを指定します。オプションで、その他のパッケージ化オプションを指定できます。packNGo オプションの指定を参照してください。
foo.zip
の内容を検査して、目的のシステムへの移動に対する準備が整っていることを確認します。使用している zip ツールによっては、パッケージを解凍せずにファイルを開いて確認できます。パッケージを解凍する必要がある場合、階層構造で生成コードのファイルをパッケージ化した場合は、主 zip ファイルとその従属 zip ファイルを解凍する必要があります。従属 zip ファイルを解凍すると、ファイルの相対パスが維持されます。
これで、結果の zip ファイルを目的の開発環境に移動してファイルを解凍できます。
packNGo オプションの指定
関数 packNGo
のオプションを指定できます。
目的 | 指定 |
---|---|
ファイル パッケージの構造を階層構造に変更 | packNGo(buildInfo, 'packType' 'hierarchical'); |
ファイル パッケージの構造を階層構造に変更し、主 zip ファイルの名前を変更 | packNGo(buildInfo, 'packType' 'hierarchical'... |
インクルード パスで見つかったすべてのヘッダー ファイルを zip ファイルに含める (コードのビルドに必要な最低限のヘッダー ファイルではなく) | packNGo(buildInfo, 'minimalHeaders' false); |
解析エラーと不足しているファイルに対する警告を生成 | packNGo(buildInfo, 'ignoreParseError' true... |
詳細については、packNGo
を参照してください。
zip ファイルの構造の選択
ファイルを生成してパッケージ化する前に、ファイルをサブフォルダーのない構造でパッケージ化するか、階層フォルダー構造でパッケージ化するかを決定します。既定の設定では、関数 packNGo
はファイルすべてを 1 つのフォルダー、つまりサブフォルダーのない構造に入れてパッケージ化します。このアプローチは最も単純であり、最適な選択になる場合があります。
以下の場合 | 使用 |
---|---|
ファイルの移動先が生成された makefile を使用しない IDE である。または、コードが必要な静的ファイルの相対位置に依存しない。 | サブフォルダーのない単一の構造 |
生成された makefile を使用する、または、コードがファイルの相対位置に依存するため、移動先の開発環境で元の環境のフォルダー構造を維持しなければならない。 | 階層構造 |
階層構造を使用する場合、関数 packNGo
は 二重構造の zip ファイルを作成します。1 つのプライマリ zip ファイルがあり、さらにこのファイルの中には次の複数の従属 zip ファイルが含まれます。
mlrFiles.zip
—
フォルダー ツリー内のファイルmatlabroot
sDirFiles.zip
— コード生成に使用したビルド フォルダー内のファイルとそのサブフォルダー内のファイル。otherFiles.zip
—
フォルダーやmatlabroot
start
フォルダー ツリーに入っていない必要なファイル。
従属 zip フォルダー内のファイル パスは主 zip ファイルのルート フォルダーに相対的なパスとなり、元の開発フォルダー構造を保持します。