MSYS2 MinGW GCC 環境をつくる (その 2) です。今回は、 Eclipse CDT をインストールして簡単なプログラムがコンパイルできるところまで作業を進めます。
MSYS2 環境を構築して MinGW gcc コンパイラをインストールする方法については前回の記事を参照してください。
Eclipse CDTをダウンロードする
Eclipse は元々 Java 用の開発環境でしたが、 CDT (C/C++ Development Tooling) プラグインを追加することで C/C++開発環境としても利用することができます。
Eclipse 公式サイトではあらかじめ CDT プラグインが組み込まれているパッケージも配布されていますので、 今回は CDT プラグインが同梱されているパッケージを利用します。
上記サイトから Eclipse IDE for C/C++ Developers
の 32 bit
または 64 bit
をダウンロードします。
Eclipse CDTを任意のフォルダーに展開する
ダウンロードした Eclipse IDE for C/C++ Developers
の ZIP ファイルを適当なフォルダーに展開します。以下、 C:\eclipse-cpp-oxygen-2-win32-x86_64\eclipse
に展開した前提で説明します。
eclipse.exe
をダブルクリックして実行してみてください。PC に Java 実行環境がインストールされている場合は、 Eclipse のスプラッシュ ・ スクリーンが表示され起動が始まります。
上記のように 「No Java virtual machine was found」 というエラーメッセージが表示されてしまった場合は、 PC に Java 実行環境がインストールされていません。次のステップに進んで JRE (Java Runtime Environment) をダウンロードしてください。
JRE(Java Runtime Environment)をダウンロードする
Eclipse は Java で書かれたプログラムですので、 Eclipse を実行するために JRE (Java Runtime Environment) が必要になります。eclipse.exe
が起動できなかった場合は、 以下の内容に従って JRE (Java Runtime Environment) をダウンロードしてください。
上記サイトにアクセスして JRE の DOWNLOAD リンクをクリックします。
ライセンスに同意する場合は Accept License Agreement
をチェックしてください。(ライセンスに同意しない場合は JRE をダウンロードすることはできません。)
Windows で利用できる JRE は 2 つあります。
jre-9.0.4_windows-x64_bin.exe
jre-9.0.4_windows-x64_bin.tar.gz
拡張子が .exe
となっているのはインストーラー形式、 拡張子が .tar.gz
となっているのは JRE のファイル一式を単純に圧縮しただけの形式です。今回は .tar.gz
形式をダウンロードします。
.tar.gzを展開する
すでに拡張子 .tar.gz
を展開できるツールをお持ちの方は jre-9.0.4_windows-x64_bin.tar.gz
を展開して、 jre-9.0.4
フォルダーを取り出してください。
拡張子 .tar.gz
を展開するツールをお持ちでない方は 7-zip が便利です。
7-zip は様々な形式で配布されています。.zip
形式で配布されているコマンドラインバージョンをダウンロードします。ダウンロードしたファイルを展開すると中に 7za.exe
という実行ファイルが入っています。これを取り出して適当なフォルダーにコピーします。(私は C:\temp
にコピーしました。)
先程ダウンロードした jre-9.0.4_windows-x64_bin.tar.gz
も同じフォルダーにコピーします。
コマンドプロンプトを起動して展開したフォルダ (C:\temp
) に移動してから次のコマンドを実行します。
コマンドプロンプトC:¥temp>7za e jre-9.0.4_windows-x64_bin.tar.gz
7za.exe
を e
オプション付きで実行することで、 .tar.gz
形式を伸長して .tar
形式にすることができます。
続いて次のコマンドを実行します。
コマンドプロンプトC:¥temp>7za x jre-9.0.4_windows-x64_bin.tar
7za.exe
を x
オプション付きで実行することで、 .tar
形式を展開して中のファイル一式を取り出すことができます。
これで jre-9.0.4
フォルダを取り出すことができました。
この jre-9.0.4
を jre
というバージョンなしのフォルダー名にリネームしてから、 Eclipse を展開したフォルダーにコピーしてください。
eclipse.exe
は同じ場所にある jre
フォルダーを Java 実行環境として自動的に認識するようになっています。これで Eclipse を起動する準備が整いました。eclipse.exe
をダブルクリックしてください。
Eclipse起動
Eclipse のスプラッシュ ・ スクリーンが表示されてから、 しばらく待つとワークスペースの場所を選択するダイアログが表示されます。
ワークスペースというのはこれから作成していくプロジェクト (プログラム) を保存していく作業場所フォルダーのことです。
次回以降、 ワークスペースの選択を省略したい場合は Use this as the default and do not ask again
にチェックを入れます。
Launch ボタンをクリックすると起動処理が進み、 Welcome 画面が表示されます。
次回以降、 Welcome 画面の表示を省略する場合は、 右下の Always show Welcome at start up
のチェックを外します。
右上の Workbench
をクリックして作業開始です!
C/C++プロジェクトを作成する
Project Explorer の余白部分を右クリックして New → Project を選択します。
新しいプロジェクトを作成するウィザードが表示されるので、 C/C++
を展開、 C/C++ Project
を選択して Next をクリックします。
C/C++プロジェクトのテンプレートを選択する画面が表示されます。ここでは C++ Managed Build
を選択して Next をクリックしてください。(ここで Makefile Project
を選択すると上手くプロジェクトが構成できないことがあるようです。まだ Experimental (実験的) だからでしょうか…。)
プロジェクトの名前やタイプを設定していきます。
- Project name に
sample1
と入力します。 - Project type として
Makefile project
→Empty Project
を選択します。 - Toolchains として
MinGW GCC
を選択します。
最後に Finish をクリックします。
プロジェクトが作成されましたが、 Empty Project
を選択したので中身は空っぽです。
Project Explorer に表示されている sample1
プロジェクトを選択して、 右クリック、 New → Source Folder を選択します。
ソース ・ フォルダーを設定する画面が表示されます。Folder name に src
と入力して、 Finish をクリックします。
プロジェクトに src
フォルダーが追加されました。
ソースコードの作成
作成した src
フォルダーを選択して、 右クリック、 New → Source File を選択します。
ソースファイルの作成画面が表示されます。Source file に sample1.cpp
と入力して、 Finish をクリックします。
src
フォルダーに sample1.cpp
が追加されました。
sample1.cpp
の中身はヘッダーコメントがあるだけです。
sample1.cpp
を編集して以下の簡単なソースコードを書きます。
sample1.cpp#include <iostream>
int main(int argc, char* argv[])
{
std::cout << "Hello, World!!" << std::endl;
return 0;
}
- 注意
- ソースコードを書いた直後は
std::cout
の個所にエラーを示す赤い波線が表示されることがあります。しばらく待っていると、 ヘッダーファイルiostream
の解析が完了して赤い波線が消えます。
Makefileの作成
次にプロジェクトをビルドするための Makefile
を作成します。
Project Explorer でプロジェクト名 sample1
を選択して、 右クリック、 New → File を選択します。
File name に Makefile
と入力して、 Finish をクリックします。
sample1
プロジェクトに Makefile
が追加されました。
まだ、 Makefile
は中身が空っぽのファイルです。Makefile
を編集して以下の内容にします。
MakefileTARGET=sample1
SRC_DIR=./src
OBJ_DIR=./obj
BIN_DIR=./bin
CC = gcc
CXX = g++
CPPFLAGS =
CXXFLAGS =
LDFLAGS =
LOADLIBES =
LDLIBS = -lstdc++
EXTENSION:=.cpp
SRC:=$(wildcard $(SRC_DIR)/**/*$(EXTENSION)) $(wildcard $(SRC_DIR)/*$(EXTENSION))
SRC_WITHOUT_PREFIX:=$(patsubst $(SRC_DIR)%,%,$(SRC))
OBJ:=$(addprefix $(OBJ_DIR),$(SRC_WITHOUT_PREFIX:$(EXTENSION)=.o))
$(BIN_DIR)/$(TARGET) : $(OBJ)
@if [ ! -d $(BIN_DIR) ]; then mkdir $(BIN_DIR); fi
$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
$(OBJ_DIR)/%.o : $(SRC_DIR)/%$(EXTENSION)
@if [ ! -d $(OBJ_DIR) ]; then mkdir $(OBJ_DIR); fi
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<
.PHONY: all clean
all: $(BIN_DIR)/$(TARGET)
clean:
@if [ -d $(OBJ_DIR) ]; then rm -fr $(OBJ_DIR); fi
@if [ -d $(BIN_DIR) ]; then rm -fr $(BIN_DIR); fi
少し複雑で長い内容ですが、 この Makefile
は汎用性があるので後半部分は編集することなく様々なプロジェクトでそのまま使うことができます。
この Makefile
を他のプロジェクトで使うときには以下の部分を変更します。
先頭の
TARGET=
に生成する実行ファイル名を指定します。(拡張子.exe
は自動的に付加されるので省略できます。)CXXFLAGS
、LDFLAGS
、LDLIBS
などコンパイラおよびリンカのオプションを必要に応じて変更します。
この Makefile
はソースコード ・ フォルダーにある *.cpp
を自動的にビルド対象にするようになっているので、 自分で 1 つずつファイルのビルド指示を Makefile
に書いていく必要がありません。
これで Makefile
の準備は完了です。
プロジェクトをビルドする
Eclipse のメニューバーから Project → Build Project を選択するとプロジェクトをビルドすることができます。
ビルドの経過は Console
ビューに表示されます。エラーが表示されることなく Build Finished と表示されれば成功です。
無事にビルドが完了するとプロジェクトには bin
フォルダーと obj
フォルダーが表示されます。
obj
フォルダーはビルド過程で生成される中間ファイルが入っているだけなので無視して構いません。bin
フォルダーには作成された実行ファイル sample1.exe
が入っています。実行ファイルは自動的に認識されて Binaries
にも表示されます。Binaries
に表示されている実行ファイルは、 Eclipse の Run As 操作で実行することができます。
プログラムを実行する
Project Explorer からプロジェクト名 sample1
を選択して、 右クリック、 Run As → Local C/C++ Application を選択するとビルドしたプログラムを実行することができます。
他にも Eclipse の画面上部のメニューボタンから実行することもできます。この実行ボタンにはショートカットキーが割り当てられており、 Ctrl + F11 を押すことでプログラムを実行することができます。
- 注意
- Ctrl を押さずに F11 を押した場合はデバッガを使っての実行になります。デバッガの構成ができていないので、 まだ F11 でプログラムをデバッグすることはできません。デバッグ実行については機会を改めて説明したいと思います。
プログラムを実行すると、 出力が Console
ビューに表示されます。
ちゃんと動きましたね!
これで、 Eclipse CDT を使った C++プロジェクトの作成とビルド ・ 実行ができました。次回は、 GTK+を使ったウィンドウ ・ アプリケーションの作成について説明していきたいと思います。