「CDT」で効率的なC/C++開発を実現する生産性向上への道 Eclipseで行うC/C++開発(2)(2/4 ページ)

» 2007年09月26日 00時00分 公開
[小泉健(NEC) ,@IT MONOist]

プロジェクトの作成と設定

 Eclipse上でC/C++の開発を行うには、プロジェクトを作成する必要があります。プロジェクトとは、開発に必要なソースファイルやドキュメントなどのファイルやフォルダを一元管理する格納場所のことです。

 プロジェクトは、ワークスペースと呼ばれるEclipseの最上位にある作業場所に格納されます。Eclipseの起動時に指定したフォルダがワークスペースとなります。

 ワークスペースには、複数のプロジェクトを持つことができますが、同時に複数のワークスペースを開くことはできません。

 CDTでは、C/C++開発用に2種類のプロジェクトを用意しています。自分の開発環境に合わせたプロジェクトを選択してください。これらプロジェクトの説明については以下を参照してください。

  • スタンダード Make C/C++ プロジェクト 
    makefileを自分で作成する場合に利用するプロジェクト。このプロジェクトの場合には、makefileの作成は行われません
  • 管理 Make C/C++ プロジェクト 
    プロジェクトに設定した情報を基にCDTが自動的にmakefileを作成するプロジェクト。既存のmakefileがない場合や、makefileの作成が面倒だと感じる場合に利用します。このプロジェクトではビルドの設定をデバッグ用とリリース用に分けることが可能です

 それでは実際に、管理 Make C プロジェクトを作成してみましょう。

  1. [ファイル]−[新規]−[管理 Make C プロジェクト]を選択します
  2. 新規プロジェクトを作成するウィザードが起動するので、プロジェクトの名前を入力し、[次へ]ボタンをクリックします。ここではプロジェクトの名前を「sample」とします
  3. 「プロジェクトのタイプ(プロジェクトが生成するオブジェクトの種類)」を選択します。ここでは、実行可能ファイル(Gnu Windows版)を選択し、[終了]ボタンをクリックします
  4. [C/C++ プロジェクト]ビューに設定したプロジェクトが作成されたことを確認します
[C/C++ プロジェクト]ビューに設定したプロジェクトが作成された 画面7 [C/C++ プロジェクト]ビューに設定したプロジェクトが作成された

 続いて、プロジェクトの設定情報を確認してみます。プロジェクトを選択した状態で、右クリックメニューの[プロパティ]を選択します。[C/C++ビルド]の項目を見ると、プロジェクトのタイプで指定した「実行可能ファイル(Gnu Windows版)」に対応したデフォルトのビルドオプションが設定されていることが分かります(画面8)。

デフォルトのビルドオプションが設定されている 画面8 デフォルトのビルドオプションが設定されている

 通常の開発では、使用する環境に合わせてビルドオプションを変更します。今回は、説明を割愛しますが、次回はビルドオプションの変更方法についても解説します。

 今回は管理 Make C プロジェクトの例で説明しましたが、スタンダード Make C プロジェクトもウィザードを使って同様な手順で作成ができます。

※注:Eclipseのデフォルトでは、ファイルの保存時に自動的にビルドするようになっており、ユーザーが明示的にビルドすることができません。ユーザーが明示的にビルドするには自動ビルド機能を停止する必要があります。自動ビルド機能を停止するには[プロジェクト]−[自動的にビルド]のチェックマークを解除してください。


既存資産のEclipseへの移行

 プロジェクトを作成したら、その配下にヘッダーファイルやソースファイルを格納します。まずは、ソースファイル格納用の「src」フォルダを作成します。

 [C/C++ プロジェクト]ビューでプロジェクトsampleを選択した状態で、[ファイル]−[新規]−[ソース・フォルダ]を選択します。新規ソースフォルダダイアログが出るので、「フォルダ名」に「src」と入力して、[終了]ボタンをクリックします。これでプロジェクトに「src」フォルダが追加されます。このフォルダ配下にソースファイルなどの開発資産を格納していきます。

 既存のソースファイルやヘッダーファイルをEclipseへ移行する場合には、既存のファイルをEclipse上の「src」フォルダにコピー&ペーストします。EclipseはWindowsのエクスプローラーと連動してコピー&ペーストが可能ですので、画面9のようにエクスプローラーからコピーして、Eclipse上で[貼り付け]を選択することで既存資産をEclipseに移行することが可能です。

エクスプローラーからコピー&ペースト 画面9 エクスプローラーからコピー&ペースト

コーディング

 CDTのコーディング機能の確認のため、「src」フォルダ配下に、新規にヘッダーファイルを作成します。「src」フォルダを選択した状態で、[ファイル]−[新規]−[ヘッダー・ファイル]を選択します。「ヘッダー・ファイル」に「Addition.h」と入力し、[終了]ボタンをクリックします。

 画面10のような多重インクルード防止のヘッダーファイルのテンプレートが作成されます。

多重インクルード防止のヘッダーファイルのテンプレートが作成される 画面10 多重インクルード防止のヘッダーファイルのテンプレートが作成される

 テンプレートが作成できたら、以下のコーディングを行います(ソース1)。4〜10行目が新規にコーディングする部分です。コーディングが完了したら、[ファイル]−[保管]でファイルを保存します。

1    #ifndef ADDITION_H_
2    #define ADDITION_H_
3 
4    typedef struct{
5            int baseNum;
6    }Addition;
7 
8    int getBase(Addition* obj);
9    void setBase(Addition* obj,int _base);
10   int calculate(Addition* obj, int param);
11 
12   #endif /*ADDITION_H_*/ 
ソース1

 [C/C++ プロジェクト]ビューに構成要素がアウトライン表示されます。

 [C/C++ プロジェクト]ビューでは、このようにC/C++構成要素をアウトライン表示し、構成要素に対して新規作成、コピー&ペースト、移動、削除、名前の変更などのさまざまな操作が可能です。

 また、構成要素をダブルクリックするとソースコードの該当個所へジャンプします。大規模なソースを扱う際には非常に便利な機能です。

[C/C++ プロジェクト]ビューに構成要素がアウトライン表示される 画面11 [C/C++ プロジェクト]ビューに構成要素がアウトライン表示される

 デフォルトでは、エディタに行番号が表示されないので、エディタの設定を変更します。

 [ウィンドウ]−[設定]を選択し、設定画面を表示させます。[一般]−[エディター]−[テキスト・エディター]を選択し、「行番号の表示」にチェックを入れて、[OK]ボタンをクリックします。これでエディタに行番号が表示されるようになります(画面12)。

エディタに行番号を表示させる 画面12 エディタに行番号を表示させる

 このほかにもC/C++のエディタはさまざまな設定が可能です。よく使われる設定について以下に示します(表2)。

名前 説明 設定個所
キーバインド ショートカットキーなどのキーバインドに関する設定。Emacs風のキーバインドなど、細かな設定が可能 [一般]−[キー]
エディタにおけるフォントと色 エディタのフォントや色の設定 [一般]−[外観]−[色とフォント]
C/C++キーワードに対する配色指定 コメントや、C/C++キーワードに対する配色 [C/C++]−[エディター]
[構文]タブ
表2 C/C++のエディタの設定項目

 少し話がそれましたが、次にソースファイルを作成します。ヘッダーファイルの作成時と同様に、「src」フォルダを選択した状態で、[ファイル]−[新規]−[ソース・ファイル]を選択します。「ソース・ファイル」に「Addition.c」と入力し、[終了]ボタンをクリックします。「src」フォルダに「Addition.c」が作成されるので、以下のようにコーディングします(ソース2)(注)。

1    #include <stdio.h>
2    #include "Addition.h"
3 
4    int globBase = 10
5 
6    int getBase(Addition* obj){
7            return obj->baseNum;
8    }
9 
10   void setBase(Addition* obj,int _base){
11           obj->baseNum = _base;
12   }
13 
14   int calculate(Addition* obj, int param){
15       return obj->baseNum + param;
16   }
17 
18   int main(int argc, char** argv){
19           int value =0;
20           Addition obj;
21           setBase(&obj, globBase);
22           value = calculate(&obj,5);
23           printf("%d\n",value);
24           return 0;
25   }
ソース2

 コーディングが完了したら、[ファイル]−[保管]でファイルを保存します。

※注:ビルド機能の確認のために、わざと構文エラーを埋め込んだソースにしています。


Copyright © ITmedia, Inc. All Rights Reserved.