メインコンテンツ

他の開発環境向けのコードのパッケージ化

コードのパッケージ化が必要な場合

MATLAB® を含まないシステムや統合開発環境 (IDE) などの別の開発環境に生成コード ファイルを移動するには、コマンド ラインで packNGo 関数を使用するか、MATLAB Coder™ アプリで [エクスポート]、[生成されたコードを ZIP ファイルとしてパッケージ化] ボタンを使用します。ファイルは圧縮ファイルとしてパッケージ化され、移動先では標準の zip ユーティリティを使って解凍することができます。

MATLAB Coder アプリを使用した生成コードのパッケージ化

この例は、MATLAB Coder アプリで [エクスポート] ボタンを使用して、生成コードを移動用に zip ファイルにパッケージ化する方法を示しています。既定では、MATLAB Coder は現在の作業フォルダーに zip ファイルを作成します。

  1. ローカルの書き込み可能フォルダー (たとえば c:\work) で、2 つの double 入力をとる関数 foo を記述します。

    function y = foo(A,B)
      y = A + B;
    end

  2. MATLAB ツールストリップの [アプリ] タブから MATLAB Coder アプリを開きます。

  3. [MATLAB Coder プロジェクトの作成] ダイアログ ボックスで、プロジェクトの名前を指定します。この例では、「foo.coderprj」と入力します。プロジェクト ファイルが作業フォルダーに作成されます。

  4. ツールストリップの [MATLAB Coder] タブで [エントリ ポイント] ボタンをクリックして [エントリ ポイント] ペインを開きます。エントリポイント関数の名前を「foo」と入力します。入力 A および B がスカラーの double であることを指定します。MATLAB Coder アプリを使用したエントリポイントの入力の型の定義を参照してください。

  5. MEX ターゲット向けに生成されたコードをパッケージ化することはできません。スタンドアロン コードを生成するようにアプリを構成するには、ツールストリップの [MATLAB Coder] タブで [出力タイプ] をクリックします。その後、[スタティック ライブラリ (.lib)][ダイナミック ライブラリ (.dll)]、または [実行可能ファイル (.exe)] を選択します。

  6. ツールストリップの [MATLAB Coder] タブで [コード生成] をクリックします。

  7. 生成コードを単一のフラットなファイルとしてエクスポートするには、ツールストリップの [MATLAB Coder] タブで [エクスポート]、[フラット ZIP ファイルとしてパッケージ化] をクリックします。zip ファイルの名前を指定します。この例では、「foo_pkg.zip」と入力します。

    この zip ファイルには、移動に必要な C コードおよびヘッダー ファイルが含まれています。次は含まれません。

  8. 作業フォルダー内の foo_pkg.zip の内容を検査して、目的のシステムへの移動に対する準備が整っていることを確認します。使用している zip ツールによっては、パッケージを解凍せずにファイルを開いて確認できます。

    これで、結果の zip ファイルを目的の開発環境に移動してファイルを解凍できます。

コマンド ラインでの生成コードのパッケージ化

この例は、コマンド ラインで関数 packNGo を使用して、生成コードを移動用に zip ファイルにパッケージ化する方法を示しています。

  1. ローカルの書き込み可能フォルダー (たとえば c:\work) で、2 つの double 入力をとる関数 foo を記述します。

    function y = foo(A,B)
      y = A + B;
    end

  2. 関数 foo のスタティック ライブラリを生成します (packNGo は MEX 関数のコードをパッケージ化しません)。

    codegen -report -config:lib foo -args {0,0}
    codegen はコードを c:\work\codegen\lib\foo フォルダーに生成します。

  3. buildInfo オブジェクトを読み込みます。

    load('c:\work\codegen\lib\foo\buildInfo.mat')

  4. zip ファイルを作成します。

    packNGo(buildInfo, 'fileName', 'foo.zip');
    または、次の表記を使用します。
    buildInfo.packNGo('fileName', 'foo.zip');
    関数 packNGo は zip ファイル foo.zip を現在の作業フォルダーに作成します。この zip ファイルには、移動に必要な C コードおよびヘッダー ファイルが含まれています。次は含まれません。

    この例では、ファイル名のみを指定します。オプションで、その他のパッケージ化オプションを指定できます。packNGo オプションの指定を参照してください。

  5. foo.zip の内容を検査して、目的のシステムへの移動に対する準備が整っていることを確認します。使用している zip ツールによっては、パッケージを解凍せずにファイルを開いて確認できます。パッケージを解凍する必要がある場合、階層構造で生成コードのファイルをパッケージ化した場合は、主 zip ファイルとその従属 zip ファイルを解凍する必要があります。従属 zip ファイルを解凍すると、ファイルの相対パスが維持されます。

これで、結果の zip ファイルを目的の開発環境に移動してファイルを解凍できます。

packNGo オプションの指定

関数 packNGo のオプションを指定できます。

目的指定
ファイル パッケージの構造を階層構造に変更packNGo(buildInfo, 'packType' 'hierarchical');
ファイル パッケージの構造を階層構造に変更し、主 zip ファイルの名前を変更packNGo(buildInfo, 'packType' 'hierarchical'...
'fileName' 'zippedsrcs');
インクルード パスで見つかったすべてのヘッダー ファイルを zip ファイルに含める (コードのビルドに必要な最低限のヘッダー ファイルではなく)packNGo(buildInfo, 'minimalHeaders' false);
解析エラーと不足しているファイルに対する警告を生成packNGo(buildInfo, 'ignoreParseError' true...
'ignoreFileMissing' true);

詳細については、packNGo を参照してください。

zip ファイルの構造の選択

ファイルを生成してパッケージ化する前に、ファイルをサブフォルダーのない構造でパッケージ化するか、階層フォルダー構造でパッケージ化するかを決定します。既定の設定では、関数 packNGo はファイルすべてを 1 つのフォルダー、つまりサブフォルダーのない構造に入れてパッケージ化します。このアプローチは最も単純であり、最適な選択になる場合があります。

以下の場合使用
ファイルの移動先が生成された makefile を使用しない IDE である。または、コードが必要な静的ファイルの相対位置に依存しない。 サブフォルダーのない単一の構造
生成された makefile を使用する、または、コードがファイルの相対位置に依存するため、移動先の開発環境で元の環境のフォルダー構造を維持しなければならない。階層構造

階層構造を使用する場合、関数 packNGo は 二重構造の zip ファイルを作成します。1 つのプライマリ zip ファイルがあり、さらにこのファイルの中には次の複数の従属 zip ファイルが含まれます。

  • mlrFiles.zipmatlabroot フォルダー ツリー内のファイル

  • sDirFiles.zip — コード生成に使用したビルド フォルダー内のファイルとそのサブフォルダー内のファイル。

  • otherFiles.zipmatlabroot フォルダーや start フォルダー ツリーに入っていない必要なファイル。

従属 zip フォルダー内のファイル パスは主 zip ファイルのルート フォルダーに相対的なパスとなり、元の開発フォルダー構造を保持します。