Eclipse Platform を使用した C/C++ 開発

C/C++ Development Toolkit (CDT) の使用法

C/C++ の開発プロジェクトにおける Eclipse Platform の使用法をご紹介します。Eclipse は主に Java の開発環境として使用されますが、そのアーキテクチャーは他のプログラミング言語もサポートしています。この記事では、Eclipse で使用可能な最も優れた C/C++ ツールキットである C/C++ Development Toolkit (CDT) の使用方法を学習します。

Pawel Leszek, Independent Software Consultant

Studio B の著作者である Paul Leszek 氏は、独立ソフトウェア・コンサルタントであると同時に、Linux/Win/Mac OS のシステム・アーキテクチャーと管理を専門とする著作家です。同氏は多数のオペレーティング・システム、プログラミング言語、ネットワーク・プロトコルで豊かな経験を持ち、特に Lotus Domino と DB2 に関する深い知識を持っています。また、「LinuxWorld」のシリーズ記事の著者であるとともに、ポーランド版「PC World」の Linux 関連コラムニストでもあります。同氏は、ワルシャワで夫人とかわいい娘と共に暮らしています。質問やコメントを是非お寄せください。



2003年 4月 22日

注記: 本記事の更新版、「Eclipse C/C++ Development Toolkit を使ってアプリケーションを開発する」が用意されています。参考資料として、本記事はこのまま残してあります。C++ Standard Template Library (STL) や Eclipse C/C++ Development Toolkit (CDT) についての最新情報は、更新版をご参照ください。

C および C++ 言語は、世界で最も広く使用されているプログラミング言語の 1 つであるため、Eclipse Platform が C/C++ 開発のサポートを提供していても不思議はありません。Eclipse Platform 自体は開発者用ツールのフレームワークにすぎないため、C/C++ を直接サポートしていません。このサポートには外部のプラグインが必要です。この記事では、C/C++ 開発用プラグインのセットである CDT の活用方法を紹介します。CDT プロジェクト (この記事の最後にある参考文献のセクションにリンクがあります) は、Eclipse Platform 用の全機能を備えたC/C++ 統合開発環境 (IDE) の提供を目的に活動しています。このプロジェクトは Linux に重点を置いてはいますが、Win32 (Win 95/98/Me/NT/2000/XP)、QNX Neutrino、Solaris プラットフォームなど、GNU 開発者用ツールが使用可能なすべての環境をその対象としています。

CDT は、Eclipse SDK Platform 用プラグインのセットとして、純粋に Java だけで実装されたオープン・ソースのプロジェクトです (Common Public License の下で認可されています)。これらのプラグインは、Eclipse Workbench に C/C++ パースペクティブを追加するものです。その結果、多くのビューやウィザードのほか、高度な編集とデバッグのサポートにより、Eclipse Workbench で C/C++ 開発をサポートできるようになります。

CDT は複雑であるため、複数のコンポーネントに分離されており、それぞれが独立したプラグインとなっています。コンポーネントはそれぞれ自律的なプロジェクトとして動作し、それぞれにコミッター、バグ・カテゴリー、およびメーリング・リストを持ちます。しかし、CDT が正常に動作するためには、すべてのプラグインが必要です。以下は、CDT のプラグイン (コンポーネント) の全リストです。

  • Primary CDT プラグイン は、CDT プラグインの「枠組み」となるものです。
  • CDT Feature Eclipse は、CDT のフィーチャー・コンポーネントです。
  • CDT Core は、コア・モデル、CDOM、およびコア・コンポーネントを提供します。
  • CDT UI は、コア UI、ビュー、エディター、およびウィザードを提供します。
  • CDT Launch は、コンパイラーやデバッガーなどの外部ツールの起動メカニズムを提供します。
  • CDT Debug Core は、デバッグ機能を提供します。
  • CDT Debug UI は、CDT のデバッグ用エディター、ビュー、およびウィザードのユーザー・インターフェースを提供します。
  • CDT Debug MI は、マシン・インターフェース (MI) 互換デバッガー用のアプリケーション・コネクターです。

それでは、これらのコンポーネントを実際のアプリケーションでどのように使用できるかを見てみましょう。図 1 は、Eclipse に表示した C/C++ プロジェクトを示しています。

図 1. CDT プラグインを組み込んだ Eclipse による C/C++ project プロジェクトの編集
CDT プラグインを組み込んだ Eclipse による C/C++ project プロジェクトの編集

CDT のインストールと実行

CDT をダウンロードしてインストールする前に、まず GNU C コンパイラー (GCC) とそれに付属するすべてのツール (make、binutils、GDB) が使用可能であることを確認する必要があります。Linux を使用している場合は、そのディストリビューションに適したパッケージ・マネージャーを使用して、開発パッケージをインストールしてください。Windows プラットフォームの場合は、Cygwin ツールキット (参考文献にリンクがあります) をインストールする必要があります。Cygwin は UNIX に似た環境を Windows で実現するためのツールで、GCC ポートのほか、automake や GNU デバッガー (GDB) などの必要な開発ツールをすべて含んでいます。Cygwin は、cygwin1.dll ライブラリーを中心に構築されています。Cygwin に代わるソリューションとしては、Minimalist GNU for Windows (MinGW) があります (参考文献にリンクがあります)。これは、自由に入手および配布できる Windows 専用のヘッダー・ファイルとインポート・ライブラリーのコレクションを、サードパーティーの DLL にまったく依存しないネイティブな Windows プログラムの作成を可能にする GNU のツールセットと組み合わせたものです。POSIX 互換の Windows アプリケーションを作成する場合は、MinGW が最適です。また、MinGW は、CygWin がインストールされている環境でも使用できます。Solaris および QNX では、インターネットからこれら専用の GCC、GNU Make binutils、および GDB ポートをダウンロードする必要があります (参考文献のリンクを参照してください)。

インストールにあたっては、適切な Java SDK/JRE および Eclipse Platform SDK がインストールされていて、それらを問題なく実行できることが前提となります。CDT には、安定型リリースと夜間ビルド (nightly build) の 2 種類があります。夜間ビルドは、すべての面でテスト済みとなっているものではありませんが、安定型リリースより多くの機能を持ち、最近のバグも修正されています。インストールの前に、ディスク上に旧バージョンの CDT が存在していないか確認してください。旧バージョンが存在する場合は、必ず完全に削除してください。CDT にはアンインストーラーがないため、削除は手動で実行する必要があります。旧バージョンがあるかを確認するには、CDT プラグインがインストールされているディレクトリー、eclipse/plugins に移動します。次に、名前の先頭に org.eclipse.cdt が付くディレクトリーをすべて削除します。最後に、workspace/.metadata/.plugins および features から、CDT のメタデータ・ディレクトリーである or.eclipse.cdt.* を削除します。

次に、CDT のバイナリーをダウンロードします。使用しているオペレーティング・システム用の適切な CDT をダウンロードしてください。残念ながら、CDT は Java で書かれていながらプラットフォームに依存します。次に、アーカイブを一時ディレクトリーに解凍し、すべてのプラグイン・ディレクトリーの内容を一時ディレクトリーから Eclipse の plugins サブディレクトリーに移動します。同様に、features ディレクトリーの内容も Eclipse の features サブディレクトリーに移動する必要があります。ここで Eclipse を再起動します。Eclipse が再起動すると、更新マネージャーから変更を検出した旨の通知があり、その確認を求められます。これで、C および C++ の 2 つのプロジェクトが使用可能になります。


新規プロジェクトの作成

Eclipse に CDT をインストールした後、File => New => Project の順に選択します。Project メニューでは、C (「Standard C Make Project」)、C++ (「Standard C++ Make Project」)、および「Convert to C or C++ Projects」という 3 種類の新しいプロジェクトが使用できるようになっています。まずは「Standard Make C++ Project」でプロジェクト用のソース・コードを作成します。C/C++ Projects View で右クリックし、New => Simple => File の順に選択します。ファイルに名前を付けて保存します。このようにして、多くのヘッダー用ファイルや C/C++ の実装コード・ファイルを作成していきます。最後に作成するのは、もちろん makefile です。makefile はバイナリーを作成するために GNU Make で使用します。この makefile には、通常の GNU make の構文を使用してください (参考文献を参照)。makefiles では、スペースではなく Tab を使用して行をインデントする必要があることに注意してください。

CDT では、Eclipse に既存のソース・コードをインポートする機会が多くなります (図 2 を参照)。CDT では、Import ウィザードを使用してファイル・システム・ディレクトリーから Workbench にファイルをコピーすることにより、この操作を簡単に実行できるようになっています。メイン・メニューバーから File => Import => File System の順に選択します。Next をクリックしてソース・ディレクトリーを開き、追加するファイルが格納されているディレクトリーを選択します。Select All をクリックしてこのディレクトリーにあるリソースをすべて選択し、その内容を確認しながら追加する必要のないリソースの選択を解除します。インポート先となる Workbench のプロジェクトまたはフォルダーを指定します。このほかにも、フォルダーやファイルをインポートするには、それらをファイル・システムから Navigator ビューにドラッグ・アンド・ドロップする方法があります。また、コピー・アンド・ペーストでもインポートできます。

図 2. CDT プロジェクトへの既存のソース・コードのインポート
CDT プロジェクトへの既存のソース・コードのインポート

CDT IDE の主要機能

CDT IDE は、CDT UI プラグインによって提供される汎用的で拡張可能なエディターを中心に構築されています。しかし、このモジュールはいまだに開発途上にあるため、クラス・ブラウザーや言語ヘルプ用ブラウザーといった、組み込まれていない重要なユーティリティーがまだいくつかあります。CDT IDE の主要機能は、次のとおりです。

  • 構文の強調表示: CDT IDE は C/C++ の構文を認識し、それらを強調表示することができます。この機能でコードに適用される色やフォーマットは、すべてユーザーが設定できます。
図 3. コンパイル失敗後に強調表示された構文エラーのマーク
コンパイル失敗後に強調表示された構文エラーのマーク
  • アウトライン: Outline ウィンドウ・モジュールは、ソース・コードに存在するプロシージャー、変数、宣言、および関数をすばやく把握できる画面を提供します。アウトラインを使用すると、ソース・コード内の適切な参照に簡単にジャンプしたり、すべてのプロジェクト・コード内を検索することができます。
  • コード作成支援: このコード補完機能は、Borland C++ Builder や MS Visual Studio などの補完機能と類似のものです。この機能では、コード・テンプレートを使用して、つまらない構文エラーを回避できるようにしています。
図 4. 適切な言語構文の使用を支援するコード作成支援機能
適切な言語構文の使用を支援するコード作成支援機能
  • コード・テンプレート: コード作成支援機能で使用されるコード・テンプレートは、標準 C/C++ 言語で使用されている構文構造の定義を表示したものです。また、独自のコード・テンプレートを定義して、author キーワードや date キーワードなどについて、ユーザー専用のショートカット機能を拡充することもできます。Window => Preferences => C/C++ => Code Templates の順に選択すると、新しいテンプレートを追加したり、すべてのテンプレートのリストを表示することができます。また、テンプレートを XML ファイルにエクスポートしたり、XML ファイルからインポートしたりすることもできます。
図 5. 定義済みの C/C++ コード・テンプレート
定義済みの C/C++ コード・テンプレート
  • コード履歴: CVS などのソース・コード・バージョン管理ソフトウェアを使用していなくても、プロジェクトのソース・コードで部分的に発生した変更を追跡することができます。選択したファイルを右クリックして、コンテキスト・メニューから Compare With => Local History... の順に選択します。
図 6. Local History 機能を使用したソース・コードの変更チェック
Local History 機能を使用したソース・コードの変更チェック

プロジェクトのビルドと実行

CDT を使用すると、プロジェクトのビルド・オプションを簡単に設定することができます。CDT は、GCC、GDB、Make の 3 つの GNU ツールに依存しています。デバッグでは GDB、コンパイルでは GCC と Make を使用しなければならないので、これらのアプリケーションは、ユーザーが使用するプラットフォームで使用可能なものであることが必要です。ほとんどの Linux (および一般には POSIX 的な) ソース・コード・パッケージでは、ビルド環境の確認に autoconf スクリプトが使用されています。したがって、コンパイル前に、"Makefile" を作成する configure コマンドを実行する必要があります。CDT には autoconf スクリプトを編集する手段がないため、このスクリプトは手動で作成する必要があります。ただし、コンパイル前に configure コマンドを呼び出すオプションを設定することはできます。

make コマンドを起動してプロジェクトをビルドする場合は、デフォルト設定のままでかまいません。しかし、より複雑な方法を利用するのであれば、Build Command テキストボックスに適切なコマンド (make -f make_it_all など) を入力する必要があります。次に、C/C++ Projects View で、C/C++ project を選択して右クリックし、Rebuild Project を選択します。make、コンパイラー、リンカーからのコンパイル・メッセージは、すべてコンソール・ウィンドウにリダイレクトされます。

図 7. コンパイラーからの出力を表示するコンソール・ウィンドウ
コンパイラーからの出力を表示するコンソール・ウィンドウ

コンパイルが成功したら、次は実際にアプリケーションを実行します。実行とデバッグのためのオプションは、すべて Eclipse のメイン・メニューの Run メニューにあります。ただし、プロジェクト実行用のオプションは、先に定義しておく必要があります。このオプションの設定は、メイン・メニューのRun... オプションで行います。ここには、アプリケーション実行用のプロファイルがいくつかあります。たとえば、あるプロファイルをテストのために使用し、別のプロファイルを最終バージョンの実行用に使用するということができます。また、アプリケーションに渡す引数の定義や環境変数の設定も可能です。プロジェクト実行用のオプションのほかには、使用するデバッガの種類 (GNU GDB や Cygwin GDB) などのデバッグ設定用のオプションがあります。図 8 は、あるプロジェクト用に作成された実行プロファイルです。

図 8. プロジェクト用の実行プロファイルの作成
プロジェクト用の実行プロファイルの作成

これらのオプションのほかにも、C/C++ Projects View でプロジェクトを選択して右クリックし、Build Settings タブの Properties を選択すると、プロジェクトのビルドに適用する一般的なオプションを設定できます。これらのオプションは、ほとんどがコンパイル・エラーの発生によってビルドが中止された場合の動作に関係するものです。


C/C++ プロジェクトのデバッグ

CDT のデバッグ機能は、標準の Eclipse Debug View を拡張して C/C++ コードのデバッグ機能を追加したものです。Debug View では、Workbench 内でのプログラムのデバッグと実行を管理できます。現在のプロジェクトのデバッグを開始するには、Debug View に切り替えます。ここでは、コードにブレークポイントやウォッチポイントを設定して (実行中はいつでも変更可能)、変数やレジスターの内容を追跡することができます。Debug View には、デバッグ中の各ターゲットについて、実行が中断されているスレッドのスタック・フレームが表示されます。プログラムの各スレッドは、ツリー内のノードとして表示され、Debug View には実行中の各ターゲットの処理が表示されます。

Eclipse は、そのコンポーネントの 1 つである CDT Debug MI を介して、マシン・インターフェース (MI) 互換のデバッガーをサポートします。ところで、MI デバッガーとはいったい何でしょうか。従来、ddd や xxgd などのサードパーティー製 GUI デバッガー (参考文献にリンクがあります) は、デバッグ機能の実装を GDB の コマンド・ライン・インターフェース (CLI) に依存してきました。しかし、残念なことに、そのインターフェースはきわめて不安定であることがわかってきました。GDB/MI は、GDB の出力を直接解析するプログラムにはるかに適した新しいマシン指向のインターフェースを提供します。


まとめ

C/C++ Development Toolkit (CDT) は、Eclipse を使用した C/C++ アプリケーションの開発を容易にする強力なプラグインのセットです。CDT はまだ開発途上ですが、既に利用可能な機能が数多く存在します。

参考文献

  • eclipse.org から、CDT プロジェクトのコンポーネントをダウンロードできます。
  • C/C++ 関連の技術的なディスカッションや質問については、eclipse.org のニュースグループにアクセスしてください。
  • 開発者の方は、プロジェクトのコンポーネントごとに作成された 開発者用メーリング・リストで、C/C++ IDE の実装に関するディスカッションに参加できます。
  • CDT プロジェクトでは、バグと機能の追跡システムとして bugzilla を使用しています。バグ/機能レポートの入力は簡単です。Eclipse の bugzilla ページにある Web フォームに必要事項を記入してください。
  • Eclipse Platform とそのしくみに関する初歩的な情報については、Greg Adams 氏と Marc Erickson 氏による developerWorks の記事「Eclipse Platform の利用」を参照してください。
  • Eclipse Platform を使用したアプリケーション開発を始めるにあたっては、David Gallardo 氏による developerWorks の記事「Eclipse Platform 入門」を参照してください。
  • 独自の Eclipse プラグインの作成に興味がある方は、David Gallardo 氏による developerWorks の記事「Eclipse プラグインの開発」を参照してください。
  • Cygwin ツールキットは、Red Hat からダウンロードできます。
  • MinGW ツールキットは、MinGW.org からダウンロードできます。
  • WebSphere Studio ソフトウェアへの対応が確認済みのプラグインの一覧については、WebSphere Studio Plug-in Central をご覧下さい。
  • IBM WebSphere Studio ツールを拡張して、WebSphere Studio Application Developer の使用に役立つ情報や機能を提供する方法を学習してください。すべての WebSphere Studio ツールは WebSphere Studio Workbench を基盤とし、その Workbench は Eclipse フレームワークを基盤としていることから、Eclipse のヘルプ拡張機能を使用することによって製品のドキュメンテーションを簡単に拡張することができます。詳しくは、「Adding Self-Help Support to WebSphere Studio Tools by Extending their Eclipse Help Systems」を参照してください。
  • developerWorks では、Eclipse ユーザー向けにさらに詳細な情報を提供しています。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source, Linux, Java technology
ArticleID=232908
ArticleTitle=Eclipse Platform を使用した C/C++ 開発
publish-date=04222003