生成コードの移動または共有
静的コード ファイルと生成コード ファイルを移動または共有するには、関数 packNGo
を使用できます。たとえば、MATLAB® および Simulink® 製品が含まれていない開発環境に生成コードを移動する場合は、この関数を使用します。
生成コードのパッケージ化と移動
生成コードをパッケージ化するには、次の手順に従います。
[コンフィギュレーション パラメーター] ダイアログ ボックスで、[コードとアーティファクトのパッケージ化] を選択します。このオプションは、コード生成後に関数
packNGo
を実行するようにビルド プロセスを構成します。[Zip ファイル名] フィールドに、生成コードとアーティファクトをパッケージ化する ZIP ファイルの名前を入力します。ファイル名は
.zip
拡張子をつけてもつけなくても指定できます。拡張子を指定しないか、.zip
以外の拡張子を指定した場合、ZIP ユーティリティが拡張子.zip
を付加します。値を指定しない場合、ビルド プロセスは
という名前を使用します。ここで、model
.zip
は最上位モデルの名前を示します。model
変更を適用し、モデルのコードを生成します。
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'... |
インクルード パスにあるヘッダー ファイルを zip ファイルにインクルードする | packNGo(buildInfo, 'minimalHeaders' false); |
解析エラーと不足しているファイルに対する警告を生成 | packNGo(buildInfo, 'ignoreParseError' true... |
メモ
関数 packNGo
は、関数の最初の引数として渡された RTW.BuildInfo
オブジェクトのビルド情報を変更できます。この関数は、モデルのビルド情報に記録されたソース パスおよびインクルード パスから追加ファイルを検索して、その情報を RTW.BuildInfo
オブジェクトに追加することがあります。
生成された ZIP ファイルの検査
生成された ZIP ファイルが移動可能であることを確認するには、ZIP ツールを使用してファイルを検査します。一部の ZIP ツールでは、ファイルを解凍せずにファイル コンテンツを表示できます。解凍が必要で、モデル コード ファイルが階層構造でパッケージ化されている場合は、プライマリ ZIP ファイルとセカンダリ ZIP ファイルを解凍する必要があります。セカンダリ ZIP ファイルを解凍すると、ファイルの相対パスが維持されます。
ZIP ファイルの移動と解凍
ZIP ファイルを移動先の開発環境に移動して、ZIP ツールを使用してファイルを解凍します。解凍されたコードをコンパイルするには、ビルド ツールを使用します。
移動先の環境に Simulink Coder または Embedded Coder がある場合は、codebuild
を使用して解凍されたコードをコンパイルできます。
コード パッケージ化の例
この例では、モデル例 rtwdemo_rtwintro
用に生成したコード ファイルをパッケージ化する方法を説明します。
作業フォルダーを書き込み可能フォルダーとして設定します。
モデル
rtwdemo_rtwintro
を開いて作業フォルダーにそのコピーを保存します。コマンド ウィンドウで次のように入力します。
set_param('rtwdemo_rtwintro', 'PostCodeGenCommand',... 'packNGo(buildInfo, ''packType'' ''hierarchical'')');
モデルのコードを生成します。
生成された ZIP ファイル
rtwdemo_rtwintro.zip
を検査します。ZIP ファイルには、2 つのセカンダリ ZIP ファイル、mlrFiles.zip
とsDirFiles.zip
が含まれています。mlrFiles.zip
およびsDirFiles.zip
を検査します。ZIP ファイルを移動先のフォルダーに移動して解凍します。
アンパックされたコードをコンパイルするには、関数
codebuild
を使用します。
制限
関数 packNGo
この関数に適用される制限の詳細については packNGo
を参照してください。
既定以外の拡張子をもつ実行可能ファイル
ビルド プロセスがテンプレート makefile アプローチを使用する場合、packNGo
はリンカー ツールで指定された実行可能ファイル拡張子を使用して、パッケージングを必要とするバイナリ アーティファクトを判別します。
既定値ではない拡張子をもつ実行可能ファイルを生成する場合、テンプレート makefile と関連付けられたツールチェーンにその拡張子が保存されていることを確認します。詳細については、テンプレート makefile とツールチェーンの関連付けを参照してください。
ビルド プロセスがツールチェーンで保存さている拡張子とは異なる拡張子をもつ実行可能ファイルを生成する場合、packNGo
はその実行可能ファイルをパッケージ化しません。