今回は久々のコンパイル関連のネタだ. GIMP にプラグインを追加する方法を紹
介しよう. といっても, 標準のディストリビューションには,
すでに手に負えない程たくさんのプラグインが付いてるので,
あまり追加するようなものも無いのだが, それでもちょっとした手間で
気になるプラグインが追加出来るのは悪くない.
たとえば,
これ
は, "Screen Shot" メニューを追加した GIMP 0.99.18 の様子です.
GIMPのソースを展開したディレクトリを, 以下 ~gimp とする.
- ~gimp/plug-ins/ でプラグインのソースを展開する.
blackhole:~gimp/plug-ins% gunzip -c new-plugin.tar.gz | tar xv
プラグイン名を new-plugin とすると, ~gimp/plug-ins/new-plugin というディレクトリが
できる.
- ~gimp で ./configure する. すると, コンパイルしたいプラグインのための
Makefile もできる(多分).
ただし, gimp をインストールした時に, configure のオプションに
./configure --prefix= /usr/local/hoge とかした場合には, 忘れずに
そのオプションも付ける事. でないと, ライブラリが動的にリンクされ
ない.
- プラグインの配布形態によっては, new-plugin.c のみというものも多い.
そんな時は, 自分でプラグイン名のディレクトリを掘って, ソースをその中に
入れる. 無論, Makefile は付いてない.
-
この場合は他のプラグインの Makefile を下敷にして, Makefile を作る.
特殊なライブラリを必要とするものでない限りは, たとえば gz(gzip を GIMP
から使うためのプラグイン)とかの Makefile を元に,
blackhole:~gimp/plug-ins% cat gz/Makefile | sed 's/gz/new-plugin/g' > new-plugin/Makefile
同様の操作を Makefile.am と Makefile.in に対しても行えば,
new-plugin 用の Makefile が一丁あがり.
こういう手が通用しないプラグインに関しては, たいてい Makefile の
サンプルが付いているようだ.
- ~gimp/libgimp/ で make . 必要なライブラリを, ../../libs から参照するこ
とになっているので, ここで make しとけば, Makefile
の $CFLAGS とかを手で書かなくてもコンパイルできる(かも).
GIMP 本体を make した直後ならば, ここらへんは全部 make されているので,
このプロセスは不要だ.
まあ, コンパイルした後の, ソースコードを展開しっぱなしで放っとける程
ドライブが余っている人ばかりではないだろうから, 改めてプラグインを追加す
るときは, この作業は必要になる.
- ~gimp/plug-ins/new-plugin で make .
うまくいけば,
~gimp/plug-ins/new-plugin に, 実行ファ
イルが一つと, ~gimp/plug-ins/new-plugin/.libs/ というディレクトリができ, その
中にも実行ファイルが一つ出来る. これら 2つの実行ファイルの関係はいまいち
謎なのだが, ".libs/" にあるファイルの方が実体で, 上のディレクトリの実行
ファイルから呼ばれているらしい.
- だめだったら, make の返すエラーメッセージに従って, 問題を解決し
てくれ. 大概は 「libhoge が無い」とか「hoge.h が無い」とかいう
やつだから, Makefile の CFLAGS に -I/usr/hoge/include とか
-L/user/hoge/lib とかを追加すれば, コンパイルはできるだろう.
- gimp をインストールしたディレクトリ, これはデフォルトでは /usr/local/
以下だが, 以下 ~prefix とする. ~prefix/lib/gimp/0.99/plug-ins/ 以下に各
種プラグインはインストールされている.
- 大抵のシステムでは, ここで管理者権限を使う事になる.
blackhole:/usr/local/lib/gimp/plug-ins/% su
password: ********
そこに, やはり ".libs/" というディ
レクトリを掘る. make を実行したディレクトリの実行ファイルは,
~prefix/lib/gimp/0.99/plug-ins/ 以下に, .libs の中の実行ファイルは,
~prefix/lib/gimp/0.99/plug-ins/.libs 以下にコピーする.
- 自分のホームディレクトリにプラグインをインストールする事もできる.
その場合は, ~/.gimp/plug-ins/ の中で, 上記と類似の操作を行う.
すなわち, .libs を掘り, 2つの
実行ファイルをそれぞれ対応するディレクトリにコピーすると良い.
この場合は, 管理者権限は必要無い.
ただし. gimp を upgrade するたびに, .gimp を新しくつくるが,
その時に間違ってファイルを失う事もあるので, どちらが良いかは簡単には決め
られない.
- GIMP起動. プラグインは, 自分がメニューの何処に出現すべきか知っている
ので, 勝手にメニューの項目が増加するであろう. 何処に出現するかは,
ソースコードの中の
#define PLUG_IN_MENU_PATH "/Xtns/Screen Shot"
という変数に書いてある. ソースコードを grep して探せ.
この場合は メインウィンドウ直下, Xtn から開ける
Screen Shot という名前のプラグインである.
無論, メニューに出現しないプラグインも多い. ファイル入出力などがそうだ.
その場合は読み書きできるフォーマットの数が増加してたりする.
デフォルトではコンパイルされないプラグインが, たまにある. ソースのプ
ラグインのディレクトリで ls
した結果と, バイナリのプラグインのディレクトリで ls した結果を diff とか
で比べてみると良いかも.
ここ
は GIMPのプラグインを集めたサイトです.
プラグインがバージョンアップしてたりもするので, たまに見に行ってみよう.
ただし, たいていむちゃくちゃ混んでます.
ここ
に置いてあるようなプラグインであれば, たいていはこの方法
でコンパイルできるでしょう.