WindowsのEclipseでProcessingのソースをコンパイルする
Processingは、http://dev.processing.org/build/にある通り、WindowsではCygwinを用いてビルドできます。ただし、単にビルドできるだけでは、Processingの中身がどうなっているか詳しく調べるのに不便です。
そこで、WindowsのEclipseでProcessing本体をビルドし、ソースを読める環境を整備しました。
Subversionでソースをチェックアウト
Cygwin環境にSubversionが入っている場合、次のようにして適当な場所にチェックアウトします。
svn co svn://processing.org/trunk/processing
TortoiseSVNや、EclipseのSubclipse、Subversiveでも同じロケーションからチェックアウトできます。
チェックアウトで生成されるディレクトリの概要は次のとおりです。
- build
- Processingのビルドに使うコードやライブラリが入っています。
- app/src
- Processing IDE(開発環境)関係のコードが入っています。
- core/src
- 実行時に起動されるPAppletなど、Processingの核となるクラスが入っています。
- その他/src
- Processingのライブラリ関係のコードが入っています。
Cygwinでビルド
とりあえずCygwinでビルドできることを確認しておきましょうか。ビルドに際しては、デフォルトのCygwin環境にあるプログラム(coreutils, gzip, tar)の他、build 5598の時点では次のプログラムが必要とされています。
- QuickTime 7 - Processingの映像関連の機能はQuickTime for Javaにべったべた依存しています
- make, gcc-mingw, g++ - processing.exeのビルドに要ります
- perl - ビルドスクリプトの一部がPerlで書かれています
- unzip, zip - ビルドの途中でファイルを解凍したり圧縮します
個人的にはQuickTime for Javaへの依存は何とかして外したらいいと思うのですが…Mac OSXでの利用者が多い現状では、仕方ないでしょうね。Windowsで利用する際は、Webカメラでキャプチャできる映像の解像度が低かったり制限を受けます。Webカメラの問題については、WindowsではDirectShowを用いればフル解像度でキャプチャできます。そのためのライブラリ「CaptureDS」を配布していますので、よろしければどうぞ。
さて、プログラムをCygwinのsetup.exeなどで揃えてから、ビルドスクリプトを走らせます。
cd build/windows/
./make.sh
JREのコアライブラリを解凍したりするのでちょっと時間がかかりますが、簡単にビルドが終わります。
Eclipseでビルド
Cygwinからスクリプトを走らせてビルドが完璧に終了するということは、必要なファイルは全て揃っているということです。しかし、Eclipseでチェックアウトしたディレクトリからプロジェクトをインポートすると大量のエラーが出ます。
これらのエラーは、プロジェクトのプロパティ画面で次の手順を踏めば解決できます。
Java コンパイラーの準拠レベルを1.5以上にする
なぜかプロジェクトのデフォルトでは準拠レベルがJDK1.4になっていますが、1.5以上でないと使えない構文が含まれているので、1.5以上に設定し直します。
以降、 ビルド・パス > ビルドパスの構成 メニューでの作業です。
必要なライブラリをリンクする
まず、app/lib内の全jarをクラスパスに追加します。この中には、前段で削ったapple.jarやantlr.jarも含まれています。
次に、Javaのtools.jarをクラスパスに追加します。これは、コンパイルに使っているJava Development Kitのlibフォルダ(例えばC:\Program Files\Java\jdk1.6.0_13\lib)にあるものでもいいですし、build/windows/jre.zipを解凍して出てくるもの(make.shを走らせた後であればbuild/windows/work/java/lib/tools.jar)でも大丈夫です。
core以外のパッケージをEclipseでビルド
ここまででProcessingのcoreはコンパイルできる状態になっていますが、serial,video,pdf,opengl,net,dxfといったライブラリ群が欠けています。
これらについては、各フォルダ内にsrcディレクトリがあるのでビルドパスに加え、さらにlibraryディレクトリがある場合はその中のjarをクラスパスに加えてやればビルドできます。
今回の記事では、ProcessingのソースコードをCygwinでビルドしたあと、Eclipseでコンパイルしてみました。ソースをJavaでコンパイルしただけではProcessingとして機能することはありませんが、Eclipseの補助機能を使えば、中でどんな処理が行われているか、相当見通しよく調べられると思います。