corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

C/C++ ツールコレクション記述子の使用 - NetBeans IDE 6.8 チュートリアル

目次

このページの内容は NetBeans IDE 6.8 が対象です

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

ソフトウェア 必須バージョン
NetBeans IDE (C/C++ のサポートを含む) version 6.8
Java Development Kit (JDK) version 6 または version 5
C/C++ コンパイラ、makegdb NetBeans IDE でテスト済みの C/C++ ツールコレクション

必要なソフトウェアのダウンロードとインストールについては、「NetBeans IDE 6.8 のインストール」および「C/C++/Fortran 向けの NetBeans IDE の構成」を参照してください。
必要なソフトウェアのダウンロードとインストールに役立ててください。

はじめに

NetBeans IDE で C/C++ ファイルをコンパイルするときに、デフォルトで使用されるコンパイラフラグを変更したいと思ったことはありませんか。NetBeans IDE でサポートされていないコンパイラを追加したいと思ったことはありませんか。この記事は、そのようなことを行うときに役立ちます。このチュートリアルでは、NetBeans IDE 6.8 で既存のツールコレクションを編集する方法と、カスタムツールコレクションを作成する方法を示します。

ツールコレクション

ツールコレクションは、コンパイラ、make ユーティリティー、およびデバッガのセットです。コードのコンパイル、make、またはデバッグを行うたびに、NetBeans IDE はツールコレクション記述子に記述された実行可能ファイルを実行します。コード支援機能では、ツールコレクションから取得したインクルードパスとマクロが使用されます。

ツールコレクション記述子は、フォルダ org/netbeans/modules/cnd/resources/toolchain/ 内のモジュール ${NB}/cnd2/modules/org-netbeans-modules-cnd.jar にある xml ファイルです。これらの元の NetBeans ツール記述子 xml ファイルは編集しないでください。この記事では、編集可能な複製ファイルを作成する方法について説明します。

ツールコレクション記述子の編集

NetBeans IDE には記述子を編集する GUI がないため、ツールコレクション記述子を編集するには多少のコツが必要です。ここでは、ツールコレクション記述子の複製となる「シャドウ」コピーを作成する方法を説明します。このコピーを編集して、IDE のツールの使用方法を変更します。

  1. IDE が実行中の場合は終了します。
  2. 次のフラグを、${NB}/etc/netbeans.conf ファイル内の netbeans_default_options エントリに追加します。
    -J-Dcnd.toolchain.personality.create_shadow=true
  3. IDE を起動して「ツール」>「オプション」を選択し、「オプション」ウィンドウの上の区画で「C/C++」を選択します。ツールコレクション記述子の「シャドウ」バージョンがユーザーディレクトリに作成されます。
    ${userdir}/config/CND/ToolChain

    作成された記述子のリストは、次のようになるはずです。

    Cygwin.xml		GNU_solaris.xml		SunStudio.xml		SunStudio_12.1.xml	SunStudio_Linux.xml
    Cygwin_4.x.xml		Interix.xml		SunStudioExpress.xml	SunStudio_12.xml
    GNU.xml			MinGW.xml		SunStudio_10.xml	SunStudio_8.xml
    GNU_mac.xml		MinGW_TDM.xml		SunStudio_11.xml	SunStudio_9.xml
    

  4. 使用しているツールチェーンの記述子を編集できます。その場合、編集した記述子は IDE を再起動したあと使用されます。これらの記述子 XML ファイルで使用されるタグの詳細については、「ツールコレクション XML ファイルの詳細」を参照してください。

次回 IDE を起動する前に、-J-Dcnd.toolchain.personality.create_shadow=true フラグを削除します。IDE では、シャドウ記述子を一度だけ作成する必要があります。

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

独自のツールコレクションを作成できます。次の例では、新しいツールコレクションを含む新規 NetBeans モジュールを作成します。NetBeans モジュール作成の概要については、「NetBeans プラグインのクイックスタート」を参照してください。

  1. 「ツール」>「プラグイン」を選択して「インストール済み」タブをクリックし、NetBeans インストールに NetBeans プラグイン開発モジュールが含まれていることを確認します。NetBeans プラグイン開発モジュールがインストールされていない場合は、「使用可能なプラグイン」タブをクリックして、モジュールをインストールします。検索ボックスに「プラグイン」と入力すると、すばやく探すことができます。
  2. 「ファイル」>「新規プロジェクト」を選択して、新規 NetBeans モジュールを作成します。「新規プロジェクト」ウィザードの「プロジェクトを選択」ページで、ウィザードの最初の手順として、カテゴリに「NetBeans モジュール」、プロジェクトに「モジュール」を選択します。「次へ」をクリックします。
  3. 「名前と場所」ページで、プロジェクト名を入力し (「mytoolchain」など)、そのほかのフィールドはそのままにします。「次へ」をクリックします。
  4. 「基本モジュール構成」ページで、コード名ベースを入力し (「org.myhome.mytoolchain」など)、「XML レイヤーを生成」チェックボックスを選択します。「完了」をクリックします。新しいプロジェクトが作成されます。
  5. 「プロジェクト」ウィンドウの「ソースパッケージ」ノードで、layer.xml ファイルを探します。layer.xml ファイルをダブルクリックして、ソースエディタで開きます。
  6. filesystem タグ内に、次のテキストをコピー&ペーストします。

        <folder name="CND">
            <folder name="ToolChain">
                <file name="GNU_tuned.xml" url="toolchain/GNU_tuned.xml">
                    <attr name="position" intvalue="5000"/>
                    <attr name="extends" stringvalue="GNU"/>
                </file>
            </folder>
        </folder>
    
    このテキストは、IDE が GNU_tuned.xml から新しいツールコレクションの記述を読み取ることを示します。

    属性 extends は、使用中のツールコレクションが NetBeans GNU ツールコレクション記述子を拡張することを示します。

  7. 「ソースパッケージ」の下の mytoolchain パッケージを右クリックし、「新規」>「Java パッケージ」を選択してサブパッケージ toolchain を作成します。
  8. toolchain サブパッケージを右クリックして「新規」>「その他」を選択し、表示されたダイアログで「その他」カテゴリを選択して、toolchain パッケージ内に新しいファイルを作成します。ファイルに GNU_tuned.xml という名前を付けて、「次へ」をクリックします。
  9. GNU_tuned.xml 内に、次のテキストをコピー&ペーストします。
    <?xml version="1.0" encoding="UTF-8"?>
    <toolchaindefinition xmlns="http://www.netbeans.org/ns/cnd-toolchain-definition/1">
        <toolchain name="GNU_tuned" display="GNU my tuned collection" family="GNU"/>
        <platforms stringvalue="sun_intel,linux"/>
        <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 に設定されています。
    プロジェクトツリーは、次のようになります。


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


  13. 「ファイル」>「新規プロジェクト」>「サンプル」>「C/C++」>「Welcome」を選択して、新規 C/C++ サンプルプロジェクト Welcome を作成します。
  14. プロジェクトノードを右クリックし、「プロパティー」を選択します。「プロジェクトプロパティー」ダイアログで「構築」ノードを選択し、「ツールコレクション」を GNU_tuned ツールコレクションに設定して、「了解」をクリックします。
  15. プロジェクトを構築します。コンパイラに -g3 -gdwarf-2 というフラグがあります。
    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
  16. 「プロジェクトプロパティー」ダイアログで GNU_tuned ツールコレクションを選択して、「了解」をクリックします。
  17. プロジェクトを再構築し、「出力」ウィンドウでコンパイル行を比較します。
    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 ファイルでサポートされるすべてのタグと属性のスキーマについては、NetBeans IDE 6.8 のソースツリー内にあるファイルを参照してください。

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

タグ 属性 説明
toolchain ツールコレクションの名前
名前 (name) ツールコレクションの名前
display ツールコレクションの表示名
family ツールコレクションのグループ名
platforms サポート対象のプラットフォーム
stringvalue サポート対象プラットフォームのコンマ区切りのリスト。
可能な値は次のとおりです。
  • linux
  • unix
  • sun_intel
  • sun_sparc
  • windows
  • mac
  • none
makefile_writer カスタムメイクファイルライター。
class カスタムメイクファイルライターのクラス名。
org.netbeans.modules.cnd.makeproject.spi.configurations.MakefileWriter を実装しているはずです。
drive_letter_prefix ファイル名の特別な接頭辞
stringvalue UNIX の場合は、「/」
Windows の cygwin の場合は、「/cygdrive/」
base_folders base_folders タグのコンテナ。
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_folders タグのコンテナ。
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 エラーパーサーサービスの名前。「カスタムコンパイラのエラーハンドラの作成」を参照してください。
id エラーパーサーサービスの名前

コンパイラフラグ

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

タグ 説明 GNU コンパイラの例
c,cpp 次のサブノードに配置されているコンパイラフラグのセット
recognizer コンパイラを検索できるようにする正規表現 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_macro ユーザーマクロを追加するフラグ -D
development_mode 各種開発モードのフラグのグループ
warning_level 各種警告レベルのフラグのグループ
architecture 各種アーキテクチャーのフラグのグループ
strip デバッグ情報を取り除くフラグ -s
dependency_generation 依存生成のフラグ -MMD -MP -MF $@.d
precompiled_header 再コンパイルされたヘッダーのフラグ -o $@
multithreading マルチスレッドのサポートのフラグのグループ
standard 各種言語標準のフラグのグループ
language_extension 各種言語拡張のフラグのグループ

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

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

独自のコンパイラプロバイダを作成する

  • 抽象クラス org.netbeans.modules.cnd.api.compilers.CompilerProvider を拡張します。
  • 次のように、クラスをサービスとして定義し、デフォルトプロバイダの前に挿入します。
    @org.openide.util.lookup.ServiceProvider(service = org.netbeans.modules.cnd.api.compilers.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.execution.ErrorParserProvider を拡張します。
  • 次のように、クラスをサービスとして定義します。
    @org.openide.util.lookup.ServiceProvider(service = org.netbeans.modules.cnd.execution.ErrorParserProvider.class)
          public class CustomCompilerProvider extends ErrorParserProvider {
              ...
              @Override
              public String getID() {
          	return "MyParser";  // NOI18N
              }
          }
  • 次のように、エラースキャナとツールコレクションの記述を、ID でリンクします。
    </scanner id="MyParser">
    ...
      </scanner>