メインコンテンツ

サポートされていないコンパイラを使用するビルド システムからの Polyspace プロジェクトの作成

問題

ビルド コマンドからの自動プロジェクト作成がコンパイラでサポートされていません。

原因

ビルド システムからの自動プロジェクト作成には、コンパイラ構成が Polyspace® で使用可能でなければなりません。Polyspace では、コンパイラ構成ファイルは特定のコンパイラにのみ提供されています。

サポート対象のコンパイラについての詳細は、ビルド システムからのプロジェクト作成の要件を参照してください。

解決法

サポートされていないコンパイラで自動プロジェクト作成を有効にするには、独自のコンパイラ構成ファイルを作成します。

  1. polyspaceroot\polyspace\configure\compiler_configuration\ から、既存の構成ファイルの 1 つをコピーします。構成ファイルとコンパイラ名とのマッピングを使用して、コンパイラに最もよく対応する構成を選択します。

  2. ファイルを my_compiler.xml として保存します。my_compiler はファイルを識別しやすい名前にすることができます。

    ファイルを編集するには、インストール フォルダー以外の場所にファイルを保存します。編集が終了したら、ファイルを polyspaceroot\polyspace\configure\compiler_configuration\ にコピーし直さなければなりません。

  3. 対象のコンパイラを表すように、ファイルの内容を編集します。XML 要素間のエントリを適切なコンテンツに置き換えます。

  4. 編集した XML ファイルを polyspaceroot\polyspace\configure\compiler_configuration\ に保存した後、ビルド コマンドを使用して自動的にプロジェクトを作成します。

    コンパイル エラーなどのエラーが表示される場合は、MathWorks® テクニカル サポートにお問い合わせください。ビルド コマンドのトレース後、ソフトウェアによって、構成ファイルとビルド コマンドから検出されたコンパイラ仕様を使用して特定のファイルがコンパイルされます。コンパイル エラーは、構成ファイル内の問題を示している可能性があります。

    ヒント

    コンパイラ構成ファイルが動作するかをすばやく確認するには、完了に長時間かからないサンプルのビルドで自動プロジェクト設定を実行します。コンパイラ構成ファイルでプロジェクトを設定した後、より大きなビルド用にこのファイルを使用することができます。

コンパイラ構成ファイルの要素

以下の表はコンパイラ構成ファイルの XML 要素の一覧で、要素内のコンテンツが何を表すかについて説明します。

XML 要素コンテンツの説明GNU® C コンパイラでのコンテンツの例
<compiler_names><name> ... </name><compiler_names>

コンパイラの実行可能ファイル名。この実行可能ファイルは、.c ファイルをオブジェクト ファイルに変換します。複数のバイナリ名をそれぞれ個別の <name>...</name> 要素に追加できます。ソフトウェアは指定されたそれぞれの名前をチェックし、一致するコンパイラ名を使用します。

<name>...</name> 要素内で、リンカーをバイナリで指定してはなりません。

指定した名前が既存のコンパイラ構成ファイルにあると、エラーが発生します。エラーを防ぐには、追加オプション -compiler-config my_compiler.xml を使用して、ソフトウェアでビルドをトレースするときに使用するコンパイラ構成ファイルを明示的に指定します。

  • gcc

  • gpp

<include_options><opt> ... </opt></include_options>

インクルード フォルダーを指定するためにコンパイラで使用するオプションです。

オプションの後に引数が来るように指定するには、optisPrefix 属性を使用し、これを true に設定します。

-I
<system_include_options><opt> ... </opt></system_include_options>

システム ヘッダーを指定するためにコンパイラで使用するオプションです。

オプションの後に引数が来るように指定するには、optisPrefix 属性を使用し、これを true に設定します。

-isystem
<preinclude_options><opt> ... </opt></preinclude_options>

コンパイルされるオブジェクトにファイルを強制的にインクルードするためにコンパイラで使用するオプションです。

オプションの後に引数が来るように指定するには、optisPrefix 属性を使用し、これを true に設定します。

-include
<define_options><opt> ... </opt></define_options>

マクロを事前定義するためにコンパイラで使用するオプションです。

オプションの後に引数が来るように指定するには、optisPrefix 属性を使用し、これを true に設定します。

-D
<undefine_options><opt> ... </opt></undefine_options>

マクロの前の定義を元に戻すためにコンパイラで使用するオプションです。

オプションの後に引数が来るように指定するには、optisPrefix 属性を使用し、これを true に設定します。

-U
<semantic_options><opt> ... </opt></semantic_options>

コンパイラの動作を修正するために使用するオプションです。これらのオプションは、コードが準拠すべき言語設定を指定します。

isPrefix 属性を使用すると、接頭辞が同じ複数のオプションを指定できます。numArgs 属性を使用すると、引数が複数のオプションを指定できます。次に例を示します。

  • 次の代わりに

    <opt>-m32</opt>
    <opt>-m64</opt>
    
    <opt isPrefix="true">-m</opt> と記述できます。

  • 次の代わりに

    <opt>-std=c90</opt>
    <opt>-std=c99</opt>
    
    <opt numArgs="1">-std</opt> と記述できます。makefile で -std c90-std=c90 の代わりに使用されている場合は、この表記法でもその使用法がサポートされます。

  • -ansi

  • -std=C90

  • -std=c++11

  • -funsigned-char

<compiler> ... </compiler>

コンパイラに対応するか、ほぼ一致する Polyspace コンパイラ オプションです。この要素の内容は、Polyspace プロジェクトまたはオプション ファイルの [コンパイラ] オプションに直接変換されます。

利用可能なコンパイラの完全なリストについては、コンパイラ (-compiler) を参照してください。

gnu4.7
<compile_options_list><opt> ... </opt></compile_options_list>リンクを実行せずにソース ファイルをコンパイルするために使用するオプションです。-c
<preprocess_options_list><opt> ... </opt></preprocess_options_list>

コンパイラが前処理済みファイルを生成する方法を指定するオプションです。

コンパイラで前処理済みファイルの標準出力への送信が許可されない場合は、マクロ $(OUTPUT_FILE) を使用します。ここでは代わりに、前処理済みファイルが内部で定義されます。

-E

マクロ $(OUTPUT_FILE) の例については、既存のコンパイラ構成ファイル ti_c6000.xml を参照してください。

<preprocessed_output_file> ... </preprocessed_output_file>

前処理された出力が格納されるファイルの名前です。

前処理された出力ファイルの名前がソース ファイルを基にしている場合、以下に示すマクロを使用できます。

  • $(SOURCE_FILE):ソース ファイル名

  • $(SOURCE_FILE_EXT):ソース ファイル拡張子

  • $(SOURCE_FILE_NO_EXT):ソース ファイル名 (拡張子なし)

たとえば、前処理されたファイル名がソース ファイルと同じだが拡張子が .pre である場合は $(SOURCE_FILE_NO_EXT).pre を使用します。

この要素の例については、既存のコンパイラ構成ファイル cosmic.xml を参照してください。

<src_extensions><ext> ... </ext></src_extensions>ソース ファイルのファイル拡張子です。
  • c

  • cpp

  • c++

<obj_extensions><ext> ... </ext></obj_extensions>オブジェクト ファイルのファイル拡張子です。o
<precompiled_header_extensions> ... </precompiled_header_extensions>プリコンパイル済みヘッダー (使用可能な場合) のファイル拡張子です。gch
<polyspace_extra_options_list>
   <opt> ... </opt>
   <opt> ... </opt>
</polyspace_extra_options_list>

以降の解析に使用される追加オプションです。

たとえば、以降の解析で非 ANSI® 拡張キーワードによるコンパイル エラーを回避するには、-D keyword=value を入力します。次に例を示します。

<polyspace_extra_options_list> 
    <opt>-D MACRO1</opt> 
    <opt>-D MACRO2=VALUE</opt> 
</polyspace_extra_options_list> 

詳細は、プリプロセッサ定義 (-D) を参照してください。

 

既存の構成ファイルとコンパイラ名の間のマッピング

polyspaceroot\polyspace\configure\compiler_configuration\ に含まれる構成ファイルから、使用しているコンパイラの構成に最もよく似ているものを選択します。次の表を使用して、コンパイラを構成ファイルにマッピングします。

コンパイラ名ベンダーXML ファイル
ARM®ARM Keilarmcc.xml
armclang.xml
Visual C++®Microsoft®cl.xml
Clang該当なしclang.xml
CodeWarrior®NXPcodewarrior.xml
cx6808Cosmiccx6808.xml
cosmic.xml
DiabWind River®diab.xml
GCC該当なしgcc.xml
Green Hills®Green Hills Softwareghs.xml
IAR Embedded WorkbenchIARiar.xml
iar-arm.xml
iar-msp430-avr.xml
iar-riscv.xml
iar-rl78-rh850.xml
Intel® oneAPI (icc または icpc)Intelintel.xml
intel-windows.xml
Renesas®Renesasrenesas-rh850.xml
renesas-rl78.xml
renesas-rx.xml
renesas-sh.xml
TASKING®Altium®tasking.xml
Tiny C該当なしtcc.xml
TM320 とその派生物Texas Instruments®ti.xml
xc8 (PIC)Microchipmicrochip.xml