Eclipse で C++ (その2)

次に Makefile プロジェクトを作成する。

Makefile プロジェクトの作成

プロジェクトの作成はメニューから 「ファイル」-->「新規」-->「C/C++ プロジェクト」を選択する。
「新規 C/C++ プロジェクトのテンプレート」のダイアログが表示されるので、 「C++ 管理ビルド」を選択して「次へ」のボタンを押す

「C/C++ プロジェクト」のダイアログが表示されるので、 プロジェクト名に "basic1" を指定 「Hello World C++ Makefile プロジェクト」を選択して完了ボタンを押す。


プロジェクト "basic1" が作成されて、左側のプロジェクト・エクスプローラーに basic1 が表示される。
プロジェクトの中には basic1.cpp と Makefileが生成されている。
Makefile
CXXFLAGS =	-O2 -g -Wall -fmessage-length=0

OBJS =		basic1.o

LIBS =

TARGET =	basic1.exe

$(TARGET):	$(OBJS)
	$(CXX) -o $(TARGET) $(OBJS) $(LIBS)

all:	$(TARGET)

clean:
	rm -f $(OBJS) $(TARGET)

ソースの修正

表示されているbasic1.cpp を修正し、ビルド・実行を行う。
きちんと漢字が表示されれば Ok。
basic1.cpp
//============================================================================
// Name        : basic1.cpp
// Author      : 
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C, Ansi-style
//============================================================================

#include 
using namespace std;

int main(void) {

#ifdef __PTR32
	cout << "*** 32 bit code !!!" << endl;
#else
	cout << "*** 64 bit code !!!" << endl;
#endif

	cout << "!!! 漢字出力のテスト !!!" << endl;

	return EXIT_SUCCESS;
}

Makefile の修正

次に自分流に Makefile を修正する。 最終的には次のようになった。
Makefile
DEBUG=1
#PTR32=1


OBJS =		basic1.o

LIBS =

# リンカーオプション
LDFLAGS = 

TARGET =	basic1.exe

CXXFLAGS = -Wall -fmessage-length=0 -D__CONSOLE_

ifeq ($(DEBUG),1)
CXXFLAGS += -O0 -g  -D_DEBUG
else
CXXFLAGS += -Os   
endif

ifeq ($(PTR32),1)
CXXFLAGS +=   -D__PTR32
endif

#出力を Shift_JIS にする
#CXXFLAGS += -fexec-charset=CP932

$(TARGET):	$(OBJS)
	$(CXX) -o $(TARGET) $(OBJS) $(LIBS)

all:	$(TARGET)

clean:
#	rm -f $(OBJS) $(TARGET)
	del *.o
	del *.exe

Makefile は行頭に '#' があるとコメント行になる。

私的に追加したシンボルは、DEBUGPTR32 である。
DEBUG は、デバッグ版とリリース版の切り替え用である。
PTR32 は、32bit版と642bitの切り替え用である。

コンパイラに渡される(かもしれない)シンボルは、 _DEBUG__PTR32__CONSOLE__ である。
__CONSOLE__ は、ウインドウズアプリとコンソールアプリの切り替え用である。

ここで出て来るコンパイルオプションは以下のとおり。

クリーナップ処理の部分は、windows には rm コマンドがないので、 del コマンドで置き換えた。

この変更作業をエディターで行なったのだが、 Eclipse が自動的に検知して反映してくれた。
使い慣れたエディターで作業できるのはありがたい。

文字コード

注意すべきは文字コードである。 まずソースファイルは UTF-8 で作成する。

次に実行時であるが、コマンドプロンプトから basic1.exe を実行すると、文字化けする。
chcp 65001 と打ち込んで、文字コードを UTF-8 に変更するか、
あるいは、コンパイルオプションで出力を Shift_JIS にするかである。
なおコマンドプロンプトの文字コードを Shift_JIS に戻すには chcp 932 と打ち込む。

後、デバッグの時文字化けするなあ。なんとかならんものか。

その1 その3   戻る