MinGW/GCJを使ってみる(Eclipse編)
今回は、Javaの開発環境であるEclipse上からGCJを使ってみます。 とはいっても、Eclipse上のビルドをGCJに置き換えるのではなく、 ANTを使ってGCJでコンパイルしてネイティブアプリケーションを作成します。
Eclipseの準備
Eclipseのインストール
Ecripseのインストールは、「Eclipse + VE を使ってみる (インストール編)」 を参照してください。
Javaプロジェクトの作成
今回は、GCJでコンパイルするソースは、「Eclipse + VE を使ってみる (SWT編)」 で作成したプロジェクトを利用します。
ANTによるGCJのコンパイル
ANTファイルの作成
ANTファイル(build.xml)をプロジェクトルートフォルダ上に作成します。
[パッケージ・エクスプローラー]からプロジェクトを右クリックし[新規]-[ファイル]を選択します。
ファイル名に "build.xml" と入力し、[終了]ボタンをクリックします。
"build.xml"を編集するANTエディタが表示されますので、ANTファイルを記述します。
<?xml version="1.0" encoding="Windows-31J"?> <project name="GCJ" default="gcj" basedir="."> <property name="dir.src" value="src" /> <property name="dir.bin" value="bin" /> <property name="target" value="HelloSWT" /> <property name="main.class" value="sample.HelloSWT" /> <target name="gcj"> <apply executable="gcj" parallel="true"> <arg line="-o ${target} --main=${main.class}" /> <arg line="-Dfile.encoding=SJIS --encoding=SJIS -mwindows" /> <fileset dir="${dir.src}" includes="**/*.java" /> </apply> </target> </project>
プロパティ"target"に作成する実行ファイル名を記述します。
この場合は、"HelloSWT.exe"という実行ファイルがプロジェクトフォルダに作成されます。
プロパティ"main.class"はmain()メソッドを含むクラス名を記述します。
編集したら、[ファイル]-[保管]で書き込みます。
ANTファイルの実行
上記ANTの記述では、gcjのコマンドが存在するフォルダを、予めPATHに追加しておく必要があります。 パスを通さないのであれば、apply executable="gcj" の"gcj"を絶対パスで記述してください。
(例) d:\thisiscool-gcc\gcc-4.0\bin\gcj であれば、"d:/thisiscool-gcc/gcc-4.0/bin/gcj"
[パッケージ・エクスプローラー]から"build.xml"を右クリックし[実行]-[ANT 実行]を選択します。 成功するば以下のように、EclipseのコンソールにBUILD SUCCESSFULと表示されます。
Buildfile: C:\Documents and Settings\xxxxx\workspace\HelloSWT\build.xml gcj: BUILD SUCCESSFUL Total time: 24 seconds
これで、"HelloSWT.exe"という実行ファイルがプロジェクトフォルダに作成されます。
SWTネイティブアプリケーションの実行
SWTのDLLファイルの配置
SWTアプリケーションを実行するには、SWTのDLLファイルが必要になります。Eclisepにも含まれていますが、 「MinGW/GCJを使ってみる」で入手したSWTのDLLを配置します。 「MinGW/GCJを使ってみる」では gcc40-20051104.tar.bz2 を展開しましたが、 この場合、"thisiscool-gcc\swt\win32\3138" の下にSWTのDLLファイルが存在します。 "swt-win32-3138.dll"がSWTのDLLファイルですので、本ファイルを実行するアプリケーションと同じフォルダに配置するなど、PATHが 通っている場所に配置する必要があります。
作成したプログラムを実行してみましょう。 作成した"HelloSWT.exe"をダブルクリックします。以下のようなウインドウが表示されます。
注意
今回、VEで使用したSWTと、GCJで使用したSWTのバージョンは合わせていません。 よって、VEで作成したソースがGCJでコンパイルできない、 またはコンパイルした実行ファイルの実行時に予期しない結果になることも考えられます。
また、Eclipse上のJDKとGCJの違いにより、Eclipse上でコンパイルあるいはJVM上で動作したものが、 GCJでコンパイルできない、またはコンパイルした実行ファイルの実行時に予期しない結果になることも十分ありますのでご注意ください。