// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= C/C++ツール・コレクション・ディスクリプタの使用 - NetBeans IDEチュートリアル
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: C/C++ツール・コレクション・ディスクリプタの使用 - NetBeans IDEチュートリアル - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, C/C++ツール・コレクション・ディスクリプタの使用 - NetBeans IDEチュートリアル

_執筆: link:mailto:alexander.simon@oracle.com[+_Alexander Simon_+]
2014年3月_ [リビジョン番号: V8.0-1]


image::images/netbeans-stamp.png[title="このページの内容は、NetBeans IDE 8.0に適用されます"]


*このチュートリアルに従うには、次のソフトウェアが必要です。*

|===
|ソフトウェア |必須バージョン 

|NetBeans IDE (C/C++のサポートを含む) |link:https://netbeans.org/downloads/index.html[+バージョン8.0+] 

|Java Development Kit (JDK) |link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+バージョン7または8+] 
|===


必要なソフトウェアのダウンロードとインストールについては、link:../../../community/releases/80/install.html[+NetBeans IDEのインストール手順+]およびlink:../../../community/releases/80/cpp-setup-instructions.html[+C/C++/Fortran向けのNetBeans IDEの構成+]を参照してください。


== 概要

このチュートリアルでは、NetBeans IDE 8.0で既存のツール・コレクションを編集する方法と、既存のツール・コレクションのカスタム・バージョンを作成する方法を示します。

ここで示す例はOracle SolarisおよびLinuxのGNUツール・コレクションに適用されますが、この概念はWindowsおよびMacにも適用されます。この情報を使用して、次の操作の方法を学習できます。

* IDEでC/C++ファイルをコンパイルするときにデフォルトで使用されるコンパイラ・フラグの変更
* IDEでサポートされていないコンパイラの追加


== ツール・コレクション

ツール・コレクションは、コンパイラ、makeユーティリティおよびデバッガのセットで、_ツール・コレクション・ディスクリプタ_によってIDEで指定されます。コードのコンパイル、makeまたはデバッグを行うたびに、プロジェクトで使用するように構成されているツール・コレクションに対する、ツール・コレクション・ディスクリプタに記述された実行可能ファイルをIDEは実行します。コード支援機能では、ツール・コレクション・ディスクリプタから取得したインクルード・パスとマクロが使用されます。

ツール・コレクション・ディスクリプタは、フォルダ ``org/netbeans/modules/cnd/toolchain/resources/toolchaindefinition/`` 内のモジュール ``_IDE_HOME_/cnd/modules/org-netbeans-modules-cnd-toolchain.jar`` にあるXMLファイルです。これらの元のIDEツール・ディスクリプタXMLファイルは編集しないでください。

この記事では、編集可能なツール・ディスクリプタの複製ファイルをNetBeansユーザー・ディレクトリ内に作成する方法について説明します。IDEでは、元のバージョンのかわりに、ユーザー・ディレクトリ内にあるツール・コレクション・ディスクリプタの情報が使用されるようになります。


== コミュニティ貢献ツール・コレクション

ツール・コレクションの一部のプラグインは、NetBeansコミュニティ内のユーザーによって提供されています。

* link:http://plugins.netbeans.org/plugin/36176/cuda-plugin[+Cuda+]
* link:http://plugins.netbeans.org/plugin/27033/msp430-toolchain[+TI msp430 microcontroller toolchain+]
* link:http://plugins.netbeans.org/plugin/42519/[+Visual Studio+]

これらのプラグインは正式にサポートされていませんが、独自のプラグインの作成に役立つ場合は、ここで参照されます。

Windowsユーザーには、NetBeansコミュニティのユーザーによる次の記事も役立つ場合があります: link:http://minghuasweblog.wordpress.com/2012/09/27/netbeans-setup-and-gnu-cross-toolchain-configuration-for-arm-developmen/[+NetBeans Setup and GNU Cross-Toolchain Configuration for ARM Development+]


== ツール・コレクション・ディスクリプタの編集

NetBeans IDEにはディスクリプタを編集するGUIがないため、ツール・コレクション・ディスクリプタを編集するには多少のコツが必要です。この項では、IDEによるツールの使用方法を変更するために編集可能な、ツール・コレクション・ディスクリプタの「シャドウ」の複製コピーを作成する方法について説明します。

1. IDEが実行中の場合は終了します。
2. ファイル ``_IDE-HOME_/etc/netbeans.conf`` を編集します。 ``_IDE-HOME_`` はNetBeansインストール・ディレクトリを表します。
3. 次のフラグを ``netbeans_default_options`` エントリに追加します。

[source,java]
----

-J-Dcnd.toolchain.personality.create_shadow=true
----
4. IDEを起動して「ツール」>「オプション」を選択し、「オプション」ウィンドウの上のペインで「C/C++」を選択します。 

ツール・コレクション・ディスクリプタの「シャドウ」バージョンが含まれるディレクトリがNetBeansユーザー・ディレクトリ内に作成されます。

_userdir_

[source,java]
----

/config/CND/ToolChain
----

NetBeansユーザー・ディレクトリの場所は、使用しているオペレーティング・システムによって変わります。 ``_userdir_/config/CND/ToolChain`` ディレクトリの場所の例を次に示します。

* ﻿Windows:  ``C:\Documents and Settings\_username_\Application Data\NetBeans\_version_\config\CND\ToolChain`` 
* Mac:  ``/Users/_username_/Library/Application Support/NetBeans/_version_/config/CND/ToolChain`` 
* LinuxおよびSolaris:  ``/home/_username_/.netbeans/_version_/config/CND/ToolChain`` 

作成されたディスクリプタのリストは、次のようになります。


[source,java]
----

CLang.xml                             SunStudio.xml
CLang_mac.xml                         SunStudio_10.xml
CLang_solaris.xml                     SunStudio_11.xml
Cygwin.xml                            SunStudio_12.1_solaris-sparc.xml
Cygwin_4.x.xml                        SunStudio_12.1_solaris-x86_linux.xml
GNU.xml                               SunStudio_12.2_linuxCompatGNU.xml
GNU_mac.xml                           SunStudio_12.2_solaris-sparc.xml
GNU_solaris.xml                       SunStudio_12.2_solaris-x86_linux.xml
Intel.xml                             SunStudio_12.3_linuxCompatGNU.xml
Interix.xml                           SunStudio_12.3_solaris-sparc.xml
MinGW.xml                             SunStudio_12.3_solaris-x86_linux.xml
MinGW_TDM.xml                         SunStudio_12.xml
OSS_linuxCompatGNU.xml                SunStudio_8.xml
OSS_solaris-sparc.xml                 SunStudio_9.xml
OSS_solaris-x86_linux.xml             WinAVR.xml
OracleSolarisStudio.xml

----

使用しているtoolchainのディスクリプタを編集できます。たとえば、SolarisでGNUを使用している場合は ``GNU_solaris.xml`` ファイルを編集し、WindowsでMinGWを使用している場合は ``MinGW.xml`` ファイルを編集する必要があります。

これらのディスクリプタXMLファイルで使用されるタグの詳細は、<<details,ツール・コレクションXMLファイルの詳細>>を参照してください。タグの値を変更することで、IDEでのツールの動作を変更できます。

このディレクトリのディスクリプタは、_IDE-HOME_ディレクトリ内の正式バージョンよりも優先されます。IDEで使用しないユーザー・ディレクトリ内のツール・ディスクリプタは削除する必要があります。

5.  ``-J-Dcnd.toolchain.personality.create_shadow=true`` フラグを ``_IDE-HOME_/etc/netbeans.conf`` から削除して、IDEがシャドウ・ディスクリプタを再度作成しないようにします。
6. 変更作業が終了したら、変更されたツール・ディスクリプタが使用されるようにするため、IDEを再起動します。


== カスタム・ツール・コレクションの作成

この項では、デバッグ用にコンパイラ・フラグを一部変更した、GNUツール・コレクションに基づくツール・コレクションを作成する方法について説明します。この例では、新規ツール・コレクションが含まれる新規NetBeansモジュールを作成するための手順が示されます。これによってツール・コレクションを共有、またはIDEの別のインスタンスで使用することが可能になります。

NetBeansモジュール作成の概要については、link:http://platform.netbeans.org/tutorials/nbm-google.html[+NetBeansプラグインのクイック・スタート+]を参照してください。


*カスタム・ツール・コレクションを作成するには:*

1. NetBeansインストールにNetBeansプラグイン開発モジュールが含まれていることを確認してください。

「ツール」>「プラグイン」と選択して、「インストール済み」タブをクリックします。NetBeansプラグイン開発モジュールがインストールされていない場合は、「使用可能なプラグイン」タブをクリックして、モジュールをインストールします。検索ボックスに「プラグイン」と入力すると、すばやく探すことができます。
2. 「ファイル」>「新規プロジェクト」を選択して、新規NetBeansモジュールを作成します。新規プロジェクト・ウィザードのプロジェクトを選択ページで、ウィザードの最初のステップとして、カテゴリに「NetBeansモジュール」、プロジェクトに「モジュール」を選択します。「次」をクリックします。
3. 名前と場所ページで、プロジェクト名を入力し(「 ``mytoolchain`` 」など)、その他のフィールドはそのままにします。「次」をクリックします。
4. 「基本モジュール構成」ページで、「コード名ベース」に ``org.myhome.mytoolchain`` と入力します。これは、作成中のモジュールを識別する一意の文字列を定義します。コード名ベースは、モジュールのメイン・パッケージとしても使用されます。
5. OSGiではなくデフォルトのNetBeansモジュール・システムを使用することになるため、「OSGiバンドルを生成」チェックボックスは選択しないでください。
6. 「終了」をクリックします。IDEではmytoolchainという新規プロジェクトが作成されます。
7. 「プロジェクト」タブで、mytoolchainプロジェクト・ノードを右クリックし、「新規」>「その他」を選択します。
8. 新規ファイル・ウィザードで、カテゴリ「モジュールの開発」およびファイル・タイプ「XMLレイヤー」を選択してから、「次」をクリックして「終了」をクリックします。

IDEでは、メイン・パッケージ ``org.myhome.mytoolchain`` 内のソース・パッケージ・ノードの下に ``layer.xml`` が作成され、エディタで ``layer.xml`` が開かれます。
9. ファイルに ``<filesystem/>`` タグが含まれている場合は、そのタグを開始および終了の ``filesystem`` タグに置き換えます。 ``<filesystem>`` 

[source,xml]
----


 ``</filesystem>`` 
----
10.  ``filesystem`` タグ内に、 ``layer.xml`` の次のテキストをコピーして貼り付けます。

[source,xml]
----

<folder name="CND">
        <folder name="Tool">
            <file name="GNU_tuned_flavor" url="toolchain/GNU_tuned_flavor.xml">
                <attr name="extends" stringvalue="GNU_flavor"/>
            </file>
            <file name="GNU_tuned_cpp" url="toolchain/GNU_tuned_cpp.xml">
                <attr name="extends" stringvalue="GNU_cpp"/>
            </file>
        </folder>
        <folder name="ToolChains">
            <folder name="GNU_tuned">
                <attr name="position" intvalue="5000"/>
                <attr name="SystemFileSystem.localizingBundle" stringvalue="org.myhome.mytoolchain.Bundle"/>
                <file name="flavor.shadow">
                    <attr name="originalFile" stringvalue="CND/Tool/GNU_tuned_flavor"/>
                </file>
                <file name="c.shadow">
                    <attr name="originalFile" stringvalue="CND/Tool/GNU_c"/>
                </file>
                <file name="cpp.shadow">
                    <attr name="originalFile" stringvalue="CND/Tool/GNU_tuned_cpp"/>
                </file>
                <file name="fortran.shadow">
                    <attr name="originalFile" stringvalue="CND/Tool/GNU_fortran"/>
                </file>
                <file name="assembler.shadow">
                    <attr name="originalFile" stringvalue="CND/Tool/GNU_assembler"/>
                </file>
                <file name="scanner.shadow">
                    <attr name="originalFile" stringvalue="CND/Tool/GNU_scanner"/>
                </file>
                <file name="linker.shadow">
                    <attr name="originalFile" stringvalue="CND/Tool/GNU_linker"/>
                </file>
                <file name="make.shadow">
                    <attr name="originalFile" stringvalue="CND/Tool/GNU_make"/>
                </file>
                <file name="debugger.shadow">
                    <attr name="originalFile" stringvalue="CND/Tool/GNU_debugger"/>
                </file>
                <file name="qmake.shadow">
                    <attr name="originalFile" stringvalue="CND/Tool/GNU_qmake"/>
                </file>
                <file name="cmake.shadow">
                    <attr name="originalFile" stringvalue="CND/Tool/GNU_cmake"/>
                </file>
            </folder>
        </folder>
    </folder>
    
----
11.  ``Bundle.properties`` ファイルを開き、次の文字列を追加します。
 ``CND/ToolChains/GNU_tuned=My GNU Tuned Tool Collection`` 
12. ソース・パッケージの下の ``org.myhome.mytoolchain`` パッケージを右クリックし、「新規」>「Javaパッケージ」を選択してサブパッケージ ``toolchain`` を作成します。デフォルト・パッケージ名の ``newpackage`` を ``toolchain`` に置き換えて、「終了」をクリックします。IDEではサブパッケージ ``org.myhome.mytoolchain.toolchain`` が作成されます。
13.  ``org.myhome.mytoolchain.toolchain`` サブパッケージを右クリックして「新規」>「空のファイル」を選択することで、新規ファイルを作成します。ファイルに ``GNU_tuned_flavor.xml`` という名前を付けて、「終了」をクリックします。

「空のファイル」がオプションとして表示されない場合、「その他」を選択してから新規ファイル・ウィザードで、カテゴリ「その他」およびファイル・タイプ「空のファイル」を選択して「次」をクリックします。

このファイルは、新規ツール・コレクションのツール・コレクション・ディスクリプタです。

14.  ``GNU_tuned_flavor.xml`` 内に、次のテキストをコピーして貼り付けます。

[source,xml]
----

<?xml version="1.0" encoding="UTF-8"?>
<toolchaindefinition xmlns="https://netbeans.org/ns/cnd-toolchain-definition/1">
    <toolchain name="GNU_tuned_flavor" display="GNU_tuned" family="GNU" qmakespec="${os}-g++"/>
    <platforms stringvalue="linux,sun_intel,sun_sparc"/>
</toolchaindefinition>

----
15.  ``org.myhome.mytoolchain.toolchain`` サブパッケージを右クリックして「新規」>「空のファイル」を選択することで、別のファイルを作成します。ファイルに ``GNU_tuned_cpp.xml`` という名前を付けて、「次」をクリックします。
16.  ``GNU_tuned_cpp.xml`` 内に、次のテキストをコピーして貼り付けます。

[source,xml]
----

<?xml version="1.0" encoding="UTF-8"?>
<toolchaindefinition xmlns="https://netbeans.org/ns/cnd-toolchain-definition/1">
    <cpp>
        <compiler name="g++"/>
        <development_mode>
            <fast_build flags=""/>
            <debug flags="-g3 -gdwarf-2" default="true"/>
            <performance_debug flags="-g -O"/>
            <test_coverage flags="-g"/>
            <diagnosable_release flags="-g -O2"/>
            <release flags="-O2"/>
            <performance_release flags="-O3"/>
        </development_mode>
    </cpp>
</toolchaindefinition>

----

デバッグ・フラグは、デフォルトのGNUツール・コレクションの記述に設定されているフラグと異なり、-g3および -gdwarf-2に設定されています。

プロジェクト・ツリーは次のようになります。

image::images/project.png[title="プロジェクト・ツリー"]

「単体テスト」フォルダが存在しない場合があります。

17. 「プロジェクト」ウィンドウで、「 ``mytoolchain`` 」プロジェクト・ノードを右クリックし、「実行」を選択します。モジュールがビルドされ、IDEの新しいインスタンス(モジュールのデフォルト・ターゲット・プラットフォーム)にインストールされます。ターゲット・プラットフォームが開き、新規モジュールを試すことができます。
18. 実行中のモジュールで、「ツール」>「オプション」を選択し、「オプション」ウィンドウの上ペインで「C/C++」を選択して、「ビルド・ツール」タブを選択します。
19. 新規ツール・コレクション(GNU_tuned)が表示されない場合は、「デフォルトに戻す」をクリックします。環境を再スキャンするように求められた場合、「はい」をクリックして続行します。

新規ツール・コレクションが表示されます。

image::images/options.png[title="オプション・パネル"]
20. 「ファイル」>「新規プロジェクト」>「サンプル」>「C/C++」>「Welcome」を選択して、新規C/C++サンプル・プロジェクト ``Welcome`` を作成します。
21. プロジェクト・ノードを右クリックし、「プロパティ」を選択します。「プロジェクト・プロパティ」ダイアログ・ボックスで「ビルド」ノードを選択し、「ツール・コレクション」をGNU_tunedツール・コレクションに設定して、「OK」をクリックします。
22. プロジェクトをビルドします。コンパイラに ``-g3 -gdwarf-2`` というフラグがあります。

[source,java]
----

g++ -c -g3 -gdwarf-2 -MMD -MP -MF build/Debug/GNU_tuned-Solaris-x86/welcome.o.d -o build/Debug/GNU_tuned-Solaris-x86/welcome.o welcome.cc
----
23. 「プロジェクト・プロパティ」ダイアログ・ボックスでGNUツール・コレクションを選択して、「OK」をクリックします。
24. プロジェクトを再ビルドし、「出力」ウィンドウでコンパイル行を比較します。

[source,java]
----

g++ -c -g -MMD -MP -MF build/Debug/GNU-Solaris-x86/welcome.o.d -o build/Debug/GNU-Solaris-x86/welcome.o welcome.cc
----

GNU_tunedツール・コレクションにはデバッグ用の異なるコンパイラ・フラグ、GNUコンパイラの開発モードがあることを参照できる必要があります。

通常のIDEでGNU_tunedツール・コレクション用の新規モジュールを使用する場合は、バイナリ(..nbmファイル)を作成してプラグインとして追加できます。

1. mytoolchainモジュール・プロジェクトを右クリックして「NBMを作成」を選択します。「ファイル」タブで、プロジェクトのbuildサブディレクトリを確認すると、.nbmファイルが作成されています。
2. 「ツール」>「プラグイン」を選択し、「プラグイン」ダイアログ・ボックスで「ダウンロード済」タブをクリックします。
3. 「プラグインの追加」をクリックして、buildディレクトリに移動し、モジュール .nbmファイルを選択して「開く」をクリックします。プラグイン・モジュールが「ダウンロード済」タブの一覧に追加されます。
4. 「ダウンロード済」タブでチェックボックスをクリックしてモジュールを選択し、「インストール」ボタンをクリックします。NetBeansプラグイン・インストーラが開きます。
5. 「次」をクリックして、インストールが終了するまで、インストーラ画面を先に進めます。
6. IDEを再起動して「ツール」>「オプション」を選択し、「オプション」ウィンドウの上ペインで「C/C++」を選択して、「ビルド・ツール」タブを選択します。
7. 新規ツール・コレクション(GNU_tuned)が表示されない場合は、「デフォルトに戻す」をクリックします。環境を再スキャンするように求められた場合、「はい」をクリックして続行します。


=== ツール・コレクションXMLファイルの詳細

ここでは、ツール・コレクションXMLファイルで最も重要なタグについて説明します。

ツールチェーンXMLファイルでサポートされるすべてのタグと属性のスキームについては、link:http://hg.netbeans.org/cnd-main[+NetBeans IDEのソース・ツリー+]内にあるファイル ``toolchaindefinition.xsd`` を検索できます。


==== ツール・コレクション定義タグ

|===
|タグ |属性 |説明 

|toolchain |ツール・コレクションの名前 

|name |ツール・コレクションの名前 

|display |ツール・コレクションの表示名 

|family |ツール・コレクションのグループ名 

|platforms |サポート対象のプラットフォーム 

|stringvalue |サポート対象プラットフォームのカンマ区切りのリスト。
可能な値は次のとおりです。

* linux
* unix
* sun_intel
* sun_sparc
* windows
* mac
* none
 

|makefile_writer |カスタムMakefileライター。 

|class |カスタムMakefileライターのクラス名。org.netbeans.modules.cnd.makeproject.spi.configurations.MakefileWriter
を実装しています。 

|drive_letter_prefix |ファイル名の特別な接頭辞 

|stringvalue |UNIXの場合は、「/」
Windowsのcygwinの場合は、「/cygdrive/」 

|base_folders |base_folderタグのコンテナ。
1つのbase_foldersタグには1つ以上のbase_folderタグが含まれています。 

|base_folder |コンパイラのベース・ディレクトリの説明。
このタグには、次のタグを含めることができます。 

|regestry |ツールのWindowsレジストリ・キー。これはミススペルですが、XMLタグには「regestry」と記述する必要があります。 

|pattern |NetBeans IDEがレジストリ内のコンパイラを検索できるようにする正規表現 

|suffix |実行可能ファイルを含むフォルダ 

|path_patern |NetBeans IDEがパスをスキャンしてコンパイラを検索できるようにする正規表現。これはミススペルですが、XMLタグには「path_patern」と記述する必要があります。 

|command_folders |command_folderタグのコンテナ。
1つのcommand_foldersタグには1つ以上のcommander_folderタグが含まれています。 

|command_folder |UNIX系のコマンドが格納されているディレクトリを記述。
Windows上のMinGWコンパイラにのみ必要。command_folderタグには、次のタグを含めることができます。 

|regestry |コマンドのWindowsレジストリ・キー。これはミススペルですが、XMLタグには「regestry」と記述する必要があります。 

|pattern |NetBeans IDEがレジストリ内のコマンド・フォルダを検索できるようにする正規表現 

|suffix |実行可能ファイルを含むフォルダ 

|path_patern |NetBeans IDEがコマンドを検索できるようにする正規表現。これはミススペルですが、XMLタグには「path_patern」と記述する必要があります。 

|scanner |エラー・パーサー・サービスの名前。<<errorhandler,カスタム・コンパイラのエラー・ハンドラの作成>>を参照してください。 

|id |エラー・パーサー・サービスの名前 
|===


==== コンパイラ・フラグ

この表では、コンパイラの記述とツールチェーンのコンパイラ・フラグの指定に使用されるタグの一覧を示します。

|===
|タグ |説明 |GNUコンパイラの例 

|c,cpp |次のサブノードに配置されているコンパイラ・フラグのセット 

|recognizer |IDEでコンパイラを検索できるようにする正規表現 |Windowsのcygwin下のGNU用
.*[\\/].*cygwin.*[\\/]bin[\\/]?$ 

|compiler |コンパイラ名(実行可能ファイルの名前) |gccまたはg++ 

|version |バージョン・フラグ |--version 

|system_include_paths |システム・インクルード・パスを取得するフラグ |-x c -E -v 

|system_macros |システム・マクロを取得するフラグ |-x c -E -dM 

|user_include |ユーザー・インクルード・パスを追加するフラグ |-I 

|user_file |_file_のコンテンツを他のファイルの前に入れるフラグ |-include _file_ 

|user_macro |ユーザー・マクロを追加するフラグ |-D 

|development_mode |各種開発モードのフラグのグループ 

|warning_level |各種警告レベルのフラグのグループ 

|architecture |各種アーキテクチャのフラグのグループ 

|strip |デバッグ情報を取り除くフラグ |-s 

|c_standard |C標準で使用するフラグを指定します。c89タグ、c99およびc11タグとともに使用します。 |c89 flags="-std=c89"
c99 flags="-std=c99"
c11 flags="-std=c11" 

|cpp_standard |C++標準で使用するフラグを指定します。cpp98タグおよびcpp11タグとともに使用します。 |cpp98 flags="-std=c++98"
cpp11 flags="-std=c++11"
cpp11 flags="-std=gnu++0x" 

|output_object_file |オブジェクト・ファイルを指定するフラグ |-o _(-oの後ろのスペースが必要です)_ 

|dependency_generation |依存性生成のフラグ |-MMD -MP -MF $@.d 

|precompiled_header |再コンパイルされたヘッダーのフラグ |-o $@ 

|important_flags |デフォルト・システムのインクルード・パスおよびコード支援用の事前定義マクロを変更するコンパイラ・フラグを指定する正規表現 |-O1|-O2|-O3|-O4|-O5|-Ofast|-Og|-Os|-ansi|-fPIC|-fPIE|-fasynchronous-unwind-tables|-fbuilding-libgcc|-fexceptions|-ffast-math|-ffinite-math-only|-ffreestanding|-fgnu-tm|-fhandle-exceptions|-fleading-underscore|-fno-exceptions|-fno-rtti|-fnon-call-exceptions|-fnon-call-exceptions|-fopenmp|-fpic|-fpie|-fsanitize=address|-fshort-double|-fshort-wchar|-fsignaling-nans|-fstack-protector(\W|$|-)|-fstack-protector-all|-funsigned-char|-funwind-tables|-g(\W|$|-)|-ggdb|-gsplit-dwarf|-gtoggle|-m128bit-long-double|-m3dnow|-m64|-mabm|-madx|-maes|-march=.*|-mavx|-mavx2|-mbmi|-mbmi2|-mf16c|-mfma(\W|$|-)|-mfma4|-mfsgsbase|-mlong-double-64|-mlwp|-mlzcnt|-mpclmul|-mpopcnt|-mprfchw|-mrdrnd|-mrdseed|-mrtm|-msse3|-msse4(\W|$|-)|-msse4.1|-msse4.2|-msse4a|-msse5|-mssse3|-mtbm|-mtune=.*|-mx32|-mxop|-mxsave|-mxsaveopt|-pthreads|-std=.*|-xc($|\+\+$) 

|multithreading |マルチスレッドのサポートのフラグのグループ |Oracle Solaris Studioツール・コレクションのみに適用され、GNUベースのツール・コレクションでは使用されない 

|standard |各種言語標準のフラグのグループ |Oracle Solaris Studioツール・コレクションのみに適用され、GNUベースのツール・コレクションでは使用されない 

|language_extension |各種言語拡張のフラグのグループ |Oracle Solaris Studioツール・コレクションのみに適用され、GNUベースのツール・コレクションでは使用されない 
|===


== カスタム・コンパイラ・プロバイダの作成

NetBeans IDEには、次のデフォルトのコンパイラ・プロバイダがあります。
org.netbeans.modules.cnd.toolchain.compilers.MakeProjectCompilerProvider
このプロバイダは、ほとんどのtoolchainで適切に動作しますが、独自のプロバイダを作成することもできます。

*独自のコンパイラ・プロバイダを作成するには:*

* 抽象クラスorg.netbeans.modules.cnd.api.compilers.CompilerProviderを拡張します。
* 次のように、クラスをサービスとして定義し、デフォルト・プロバイダの前に挿入します。

[source,java]
----

@org.openide.util.lookup.ServiceProvider(service = org.netbeans.modules.cnd.spi.toolchain.CompilerProvider.class,
position=500)
public class CustomCompilerProvider extends CompilerProvider {
...
}

----
position=500属性は、カスタム・プロバイダがデフォルト・プロバイダの前に呼び出されることを保証します。カスタム・プロバイダは、「createCompiler()」メソッドで、ツールのオーバーライド用にNULLでない「Tool」を返す必要があります。


== カスタム・コンパイラのエラー・ハンドラの作成

NetBeans IDEには、デフォルトのコンパイラ・エラー・ハンドラが2つあります。

* GNUコンパイラ用
* Sun Studioコンパイラ用

GNUコンパイラ・ハンドラは、どのようなGNUコンパイラに対しても適切に動作しますが、必要に応じて独自のコンパイラ・エラー・ハンドラを定義することもできます。

*独自のコンパイラ・エラー・ハンドラを作成するには:*

* 抽象クラスorg.netbeans.modules.cnd.spi.toolchain.CompilerProviderを拡張します
* クラスをサービスとして定義します:

[source,java]
----

@org.openide.util.lookup.ServiceProvider(service = org.netbeans.modules.cnd.spi.toolchain.CompilerProvider.class)
      public class CustomCompilerProvider extends ErrorParserProvider {
          ...
          @Override
          public String getID() {
      	return "MyParser";  // NOI18N
          }
      }
----
* エラー・スキャナとツール・コレクションの記述を、IDでリンクします:

[source,xml]
----

</scanner id="MyParser">
...
  </scanner>
----


== 関連項目

NetBeans IDEでのC/C++/Fortranを使用した開発に関する詳細な記事は、link:https://netbeans.org/kb/trails/cnd.html[+C/C++の学習+]を参照してください。

link:mailto:users@cnd.netbeans.org?subject=Feedback:Using%20the%20C/C++%20Tool%20Collection%20Descriptors%20-%20NetBeans%20IDE%208.0%20Tutorial[+このチュートリアルに関するご意見をお寄せください+]


