MSYS2 MinGW GCC環境をつくる(その2)

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 の余白部分を右クリックして NewProject を選択します。

新しいプロジェクトを作成するウィザードが表示されるので C/C++ を展開 C/C++ Project を選択して Next をクリックします。

C/C++プロジェクトのテンプレートを選択する画面が表示されます。ここでは C++ Managed Build を選択して Next をクリックしてください。ここで Makefile Project を選択すると上手くプロジェクトが構成できないことがあるようです。まだ Experimental 実験的 だからでしょうか…

プロジェクトの名前やタイプを設定していきます。

  • Project name sample1 と入力します。
  • Project type として Makefile projectEmpty Project を選択します。
  • Toolchains として MinGW GCC を選択します。

最後に Finish をクリックします。

プロジェクトが作成されましたが Empty Project を選択したので中身は空っぽです。

Project Explorer に表示されている sample1 プロジェクトを選択して 右クリック NewSource Folder を選択します。

ソース フォルダーを設定する画面が表示されます。Folder name src と入力して Finish をクリックします。

プロジェクトに src フォルダーが追加されました。

ソースコードの作成

作成した src フォルダーを選択して 右クリック NewSource 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 を選択して 右クリック NewFile を選択します。

File name Makefile と入力して Finish をクリックします。

sample1 プロジェクトに Makefile が追加されました。

まだ Makefile は中身が空っぽのファイルです。Makefile を編集して以下の内容にします。

Makefile
TARGET=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 のメニューバーから ProjectBuild Project を選択するとプロジェクトをビルドすることができます。

ビルドの経過は Console ビューに表示されます。エラーが表示されることなく Build Finished と表示されれば成功です。

無事にビルドが完了するとプロジェクトには bin フォルダーと obj フォルダーが表示されます。

obj フォルダーはビルド過程で生成される中間ファイルが入っているだけなので無視して構いません。bin フォルダーには作成された実行ファイル sample1.exe が入っています。実行ファイルは自動的に認識されて Binaries にも表示されます。Binaries に表示されている実行ファイルは Eclipse Run As 操作で実行することができます。

プログラムを実行する

Project Explorer からプロジェクト名 sample1 を選択して 右クリック Run AsLocal C/C++ Application を選択するとビルドしたプログラムを実行することができます。

他にも Eclipse の画面上部のメニューボタンから実行することもできます。この実行ボタンにはショートカットキーが割り当てられており Ctrl + F11 を押すことでプログラムを実行することができます。

注意
Ctrl を押さずに F11 を押した場合はデバッガを使っての実行になります。デバッガの構成ができていないので まだ F11 でプログラムをデバッグすることはできません。デバッグ実行については機会を改めて説明したいと思います。

プログラムを実行すると 出力が Console ビューに表示されます。

ちゃんと動きましたね!

これで Eclipse CDT を使った C++プロジェクトの作成とビルド 実行ができました。次回は GTK+を使ったウィンドウ アプリケーションの作成について説明していきたいと思います。

この記事を共有しませんか?