Main Content

MATLAB Compiler を使用した依存関係の分析

MATLAB® Compiler™ は依存関係の分析関数を使用して、生成されるパッケージに含める必要なファイルのリストを決定します。このプロセスでは、長いファイル リストの生成される場合があります。これは特に、MATLAB オブジェクト クラスがコンパイルに存在し、依存関係アナライザーではパッケージ化時にオーバーロード メソッドを解決できない場合に発生します。依存関係の分析では、各パスの include/exclude ファイルも処理します。

ヒント

パッケージ化時のパフォーマンスを改善し、アプリケーション サイズを小さくするには、mcc コマンドの -N および -p フラグを使用してパスを短くします。また、mcc -a フラグ、コンパイラ アプリの [アプリケーションの実行に必要なファイル] セクション、または compiler.build 関数の AdditionalFiles オプションを使用して、含めるファイルを指定することもできます。

関数の依存関係

依存関係アナライザーでは、以下のような実行可能コンテンツが検索されます。

  • MATLAB ファイル

  • P ファイル

    メモ

    P ファイルに対応する MATLAB ファイルが使用できない場合、依存関係の分析では P ファイルの依存関係を判断できません。

  • .fig ファイル

  • MEX ファイル

MEX ファイル、DLL、共有ライブラリを含める

MEX ファイルを含んでいる MATLAB 関数をコンパイルする場合は、依存関係アナライザーによる検索が可能であることを確認してください。特に次の点に注意してください。

  • 依存関係アナライザーでは、MEX ファイル、DLL または共有ライブラリを調べて依存関係を判定することができないため、これらのファイルに必要なすべての実行可能ファイルは明示的に含めてください。

  • 依存関係アナライザーが MEX ファイル、DLL、共有ライブラリによって呼び出された MATLAB 関数を検索できるかどうかわからない場合は、手動で含めてください。

  • コンパイラと互換性がない関数もあります。ビルドが完了したら、ファイル mccExcludedFiles.log を確認してください。このファイルには、デプロイできないアプリケーションから呼び出されたすべての関数がリストされています。

ライセンスとツールボックスの依存関係

一部の機能には特定の MathWorks® 製品が必要です。関数 matlab.codetools.requiredFilesAndProducts を使用して、指定した MATLAB プログラム ファイルを実行するために必要になる可能性がある MATLAB ファイルと MathWorks 製品のリストを表示できます。

必要なツールボックスを特定する方法の詳細については、MATLAB Answers の投稿 How do I determine the required toolboxes and licenses for my MATLAB code? を参照してください。

データ ファイルの依存関係

実行可能コンテンツに加え、MATLAB Compiler は、audioinfoaudioreadcsvreaddaqreaddlmreadfilereadfopenimfinfoimportdataimreadloadmatfilemmfileinfoopenreadtabletypeVideoReaderxlsfinfoxlsreadxmlreadxslt のうち任意の関数を呼び出して、MATLAB 関数がアクセスするファイルの検出と自動インクルードを行うことができます。

コンパイルされたアプリケーションに特定のファイルが確実に含まれるようにするには、ファイルをパスなしで指定します。つまり、現在のディレクトリまたは MATLAB パスにリストされた任意のディレクトリからファイルにアクセスできる状態にしておく必要があります。次に例を示します。

fileread('myfile.ext')
ファイルへの絶対パスを指定すると、コンパイラはコンパイルされたアプリケーションにファイルを含めません。依存関係の分析では、パス要素がない場合にのみファイルを含め、MATLAB パスに基づいてファイルを探します。

コンパイラ アプリは、これらのデータ ファイルを [アプリケーションの実行に必要なファイル] 領域に自動的に追加します。

パッケージからのファイルの除外

依存関係の分析中にデータ ファイルを無視するには、以下のオプションを 1 つ以上使用します。これらのオプションを一緒に使用する方法の例は、%#exclude を参照してください。

  • 依存関係の分析中にファイルまたは関数を無視するために、MATLAB コードで %#exclude プラグマを使用する。

  • 依存関係の分析中に検出されたすべてのデータ ファイルを無視するために、mcc コマンドで -X フラグを使用する。

  • データ ファイルが自動的にパッケージに含まれるかどうかを制御するために、関数 compiler.buildAutoDetectDataFiles オプションを使用する。これを false/'off'/0 に設定することは、-X の使用と等価です。

依存関係が不足している場合のトラブルシューティング

依存関係アナライザーで 1 つ以上の依存関係が見つからない場合、不足している項目のリストが MATLAB Compiler により unresolvedSymbols.txt ファイルに取り込まれます。このファイルが空でない場合、必要な依存関係を特定し、それらを検索パスに配置することで確実に使用できるようにする必要があります。その後、プロジェクトを再パッケージ化します。1 つ以上の不足している依存関係がデプロイ可能でない場合、isdeployed boolean を使用してデプロイするまでは、その機能をコードで引き続き使用できます。

参考

| | |