Main Content

生成コードの移動または共有

静的コード ファイルと生成コード ファイルを移動または共有するには、関数 packNGo を使用できます。たとえば、MATLAB® および Simulink® 製品が含まれていない開発環境に生成コードを移動する場合は、この関数を使用します。

生成コードのパッケージ化と移動

生成コードをパッケージ化するには、次の手順に従います。

  1. [コンフィギュレーション パラメーター] ダイアログ ボックスで、[コードとアーティファクトのパッケージ化] を選択します。このオプションは、コード生成後に関数 packNGo を実行するようにビルド プロセスを構成します。

  2. [Zip ファイル名] フィールドに、生成コードとアーティファクトをパッケージ化する ZIP ファイルの名前を入力します。ファイル名は .zip 拡張子をつけてもつけなくても指定できます。拡張子を指定しないか、.zip 以外の拡張子を指定した場合、ZIP ユーティリティが拡張子 .zip を付加します。値を指定しない場合、ビルド プロセスは model.zip という名前を使用します。ここで、model は最上位モデルの名前を示します。

  3. 変更を適用し、モデルのコードを生成します。

  4. ZIP ツールを使用して結果の ZIP ファイルを検査して、パッケージ化されたコードが移動可能であることを確認します。

ZIP ファイルを移動先の開発環境に移動して、ZIP ツールを使用してファイルを解凍します。解凍されたコードをコンパイルするには、ビルド ツールを使用します。

移動先の環境に Simulink Coder™ または Embedded Coder® がある場合は、codebuild を使用して解凍されたコードをコンパイルできます。

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

ライン コマンドを使用して生成コードをパッケージ化して移動するには、次のワークフローを使用します。

ZIP ファイルの構造の選択

モデル ビルド用のファイルを生成してパッケージ化する前に、ファイルをサブフォルダーのない、あるいは階層的なフォルダーに入れてパッケージ化するかどうかを決定します。既定の設定では、関数 packNGo はファイルすべてを 1 つのフォルダー、つまりサブフォルダーのない構造に入れてパッケージ化します。

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

階層構造を使用すると、関数 packNGo は二重構造の zip ファイルを作成し、主 zip ファイルの中には次の複数の従属 zip ファイルが入ります。

  • mlrFiles.zip - matlabroot フォルダー ツリー内のファイル

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

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

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

zip ファイルの名前の選択

既定の設定では、関数 packNGo によって model という名前がプライマリ zip ファイルに与えられます。別の名前を付けることもできます。ファイル タイプの拡張子を付けずにファイル名を指定すると、関数は . を名前の後に付けます。

モデル コードの zip ファイルへのパッケージ化

PostCodeGenCommand コンフィギュレーション パラメーター、関数 packNGo、およびモデルのビルド情報オブジェクトを使用してモデル コード ファイルをパッケージ化します。パッケージ化作業のセット アップには次の情報を使用できます。

  • システムが生成したビルド情報オブジェクト。

    この場合、関数 set_param を使ってコンフィギュレーション パラメーター PostCodeGenCommand を設定することにより、モデル コードが生成される前に、関数 packNGo が明示的に呼び出されるようにします。以下に例を示します。

    set_param(bdroot, 'PostCodeGenCommand', 'packNGo(buildInfo);');

    モデルのコードを生成してディスクに書き出した後、makefile を生成する前に、このコマンドはビルド プロセスが packNGo への呼び出しを評価するように指示します。このコマンドは、現在選択されているモデルに対して、システムが生成したビルド情報オブジェクトを使用します。

  • プログラムを使って作成したビルド情報オブジェクト。

    この場合、関数 packNGo に渡すビルド情報オブジェクトに含めるパスやファイルは他のビルド情報関数を使って選択できます。以下に例を示します。

    .
    .
    .
    myModelBuildInfo = RTW.BuildInfo;
    addSourceFiles(myModelBuildInfo, {'test1.c' 'test2.c' 'driver.c'});
    .
    .
    .
    packNGo(myModelBuildInfo);

次の例では、packNGo の既定の動作を変更する方法を示します。

目的 指定項目
ファイル パッケージの構造を階層構造に変更packNGo(buildInfo, 'packType' 'hierarchical');
プライマリ zip ファイルの名前を変更packNGo(buildInfo, 'fileName' 'zippedsrcs');
ファイル パッケージの構造を階層構造に変更し、主 zip ファイルの名前を変更packNGo(buildInfo, 'packType' 'hierarchical'...
'fileName' 'zippedsrcs');
インクルード パスにあるヘッダー ファイルを zip ファイルにインクルードするpackNGo(buildInfo, 'minimalHeaders' false);
解析エラーと不足しているファイルに対する警告を生成packNGo(buildInfo, 'ignoreParseError' true...
'ignoreFileMissing' true);

メモ

関数 packNGo は、関数の最初の引数として渡された RTW.BuildInfo オブジェクトのビルド情報を変更できます。この関数は、モデルのビルド情報に記録されたソース パスおよびインクルード パスから追加ファイルを検索して、その情報を RTW.BuildInfo オブジェクトに追加することがあります。

生成された ZIP ファイルの検査

生成された ZIP ファイルが移動可能であることを確認するには、ZIP ツールを使用してファイルを検査します。一部の ZIP ツールでは、ファイルを解凍せずにファイル コンテンツを表示できます。解凍が必要で、モデル コード ファイルが階層構造でパッケージ化されている場合は、プライマリ ZIP ファイルとセカンダリ ZIP ファイルを解凍する必要があります。セカンダリ ZIP ファイルを解凍すると、ファイルの相対パスが維持されます。

ZIP ファイルの移動と解凍

ZIP ファイルを移動先の開発環境に移動して、ZIP ツールを使用してファイルを解凍します。解凍されたコードをコンパイルするには、ビルド ツールを使用します。

移動先の環境に Simulink Coder または Embedded Coder がある場合は、codebuild を使用して解凍されたコードをコンパイルできます。

コード パッケージ化の例

この例では、モデル例 CounterModel 用に生成したコード ファイルをパッケージ化する方法を説明します。

  1. モデルを開きます。

    openExample('CounterModel');

  2. コマンド ウィンドウで次のように入力します。

    set_param('CounterModel', 'PostCodeGenCommand',...
    'packNGo(buildInfo, ''packType'', ''hierarchical'')');
  3. モデルのコードを生成します。

  4. 生成された ZIP ファイル CounterModel.zip を検査します。ZIP ファイルには、セカンダリ ZIP ファイル sDirFiles.zip が含まれています。

  5. sDirFiles.zip を検査します。

  6. ZIP ファイルを移動先のフォルダーに移動して解凍します。

  7. アンパックされたコードをコンパイルするには、関数 codebuild を使用します。

制限

関数 packNGo

この関数に適用される制限の詳細については packNGo を参照してください。

既定以外の拡張子をもつ実行可能ファイル

ビルド プロセスがテンプレート makefile アプローチを使用する場合、packNGo はリンカー ツールで指定された実行可能ファイル拡張子を使用して、パッケージングを必要とするバイナリ アーティファクトを判別します。

既定値ではない拡張子をもつ実行可能ファイルを生成する場合、テンプレート makefile と関連付けられたツールチェーンにその拡張子が保存されていることを確認します。詳細については、テンプレート makefile とツールチェーンの関連付けを参照してください。

ビルド プロセスがツールチェーンで保存さている拡張子とは異なる拡張子をもつ実行可能ファイルを生成する場合、packNGo はその実行可能ファイルをパッケージ化しません。

参考

|

関連するトピック