arc の日記

はてなダイアリーから引っ越してきました。さらに新しい記事は https://junkato.jp/ja/blog/ で書いています。

WindowsのEclipseでProcessingのソースをコンパイルする

Processingは、http://dev.processing.org/build/にある通り、WindowsではCygwinを用いてビルドできます。ただし、単にビルドできるだけでは、Processingの中身がどうなっているか詳しく調べるのに不便です。

そこで、WindowsEclipseでProcessing本体をビルドし、ソースを読める環境を整備しました。

Subversionでソースをチェックアウト

Cygwin環境にSubversionが入っている場合、次のようにして適当な場所にチェックアウトします。

svn co svn://processing.org/trunk/processing

TortoiseSVNや、EclipseSubclipseSubversiveでも同じロケーションからチェックアウトできます。

チェックアウトで生成されるディレクトリの概要は次のとおりです。

  • build
    • Processingのビルドに使うコードやライブラリが入っています。
  • app/src
    • Processing IDE(開発環境)関係のコードが入っています。
  • core/src
    • 実行時に起動されるPAppletなど、Processingの核となるクラスが入っています。
  • その他/src
    • Processingのライブラリ関係のコードが入っています。

Cygwinでビルド

とりあえずCygwinでビルドできることを確認しておきましょうか。ビルドに際しては、デフォルトのCygwin環境にあるプログラム(coreutils, gzip, tar)の他、build 5598の時点では次のプログラムが必要とされています。

  1. QuickTime 7 - Processingの映像関連の機能はQuickTime for Javaにべったべた依存しています
  2. make, gcc-mingw, g++ - processing.exeのビルドに要ります
  3. perl - ビルドスクリプトの一部がPerlで書かれています
  4. 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以上に設定し直します。

以降、 ビルド・パス > ビルドパスの構成 メニューでの作業です。

Processingのコアをビルドパスに加える

core/srcをビルドパスに加え、coreという名前のプロジェクトへの依存をなくします。


存在しないライブラリへのリンクを削る

build/shared/lib内のjarは存在しないのでクラスパスから全て削除します。


必要なライブラリをリンクする

まず、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の補助機能を使えば、中でどんな処理が行われているか、相当見通しよく調べられると思います。