Main Content

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

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

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

MATLAB Coder アプリを使用した生成コードのパッケージ化およびコマンド ラインでの生成コードのパッケージ化を参照してください。

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 Coder アプリを開きます。MATLAB ツールストリップの [アプリ] タブの [コード生成] の下で、MATLAB Coder アプリ アイコンをクリックします。

  3. [ソース ファイルの選択] ページで、エントリポイント関数 foo の名前を入力します。[次へ] をクリックして [入力の型を定義] ページに進みます。

  4. 入力 A および B がスカラーの double であることを指定します。[次へ] をクリックして [実行時の問題の確認] ページに進みます。

  5. 実行時の問題を確認します。[実行時の問題の確認] ダイアログ ボックスで、スカラー double 入力をもつ foo を呼び出すコードを入力します。次に例を示します。

    foo(1,2)
    [問題の確認] をクリックします。

    実行時の問題を確認するには、アプリによって MEX 関数を生成して実行します。アプリは foo の問題を検出しません。[次へ] をクリックして [コード生成] ページに移動します。

  6. [生成] ダイアログ ボックスで、[ビルド タイプ][ソース コード][スタティック ライブラリ][ダイナミック ライブラリ] または [実行可能ファイル] に設定します。MEX ターゲット向けに生成されたコードをパッケージ化することはできません。

  7. [生成] をクリックします。[次へ] をクリックして [ワークフローの完了] ページに進みます。

  8. [ワークフローの完了] ページで、[パッケージ] をクリックします。

  9. [パッケージ] ダイアログ ボックスで、パッケージ ファイルの名前とパッケージ タイプを指定します。既定の設定では、アプリはプロジェクト名をパッケージ ファイル名に適用します。アプリでは、ファイルは現在の作業フォルダーに保存されます。既定の設定では、アプリは生成されたファイルをサブフォルダーのない 1 つのフォルダーとしてパッケージ化します。この例では、既定の値を使用して [保存] をクリックします。

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

  10. 作業フォルダー内の 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 ファイルのルート フォルダーに相対的なパスとなり、元の開発フォルダー構造を保持します。