If you want to install some applications into certain directory via build from source, use caam to call ./configure and make continuously with the same command line environment.
アプリケーションはソースからのビルドが基本。そんなちみは caam を使いたまへ。インストールするときは 特定の閉じたPREFIXにいれるのだ、そのほうが消したりしやすいから、 という運用の利点が理解できる人はぜし caam を。caam は コンパイル環境を設定する環境変数を適切に設定して 連続的に make を呼ぶ。こうすることで ./configure しているときに 設定した変数をキープしたままmakeでコンパイラを呼べる。 そのときに CFLAGS, CPPFLAGS, LDFLAGS, LD_RUN_PATH, LD_LIBRARY_PATH, PKG_CONFIG_PATH をしっかり設定し、 なおかつ autoconf によってそれらの変数が継承されない 場合でも gcc/c++ をwrapして上記変数の意味する値がちゃんと伝わるように 努力する。コンパイルでこけそうな可能性を最大限に小さくするのが caamである。
[2025/10] またcmakeにもほぼ対応した。インストールPREFIXを変えて、 リンクされるバイナリに $PREFIX/lib をライブラリパスとして埋め込むために -DCMAKE_INSTALL_RPATH をよろしくあてがってくれるような機能を足した。 これでcmakeも怖くない!
The caam scripts are obtained from GitBucket repository.
The caam script assumes your application installation hierarchy as follows(/usr/local as an example).
--[/usr/local/]
|
+-[audio/] # command and libraries related to audio/sound
| +-[bin/]
| +-[include/]
| +-[lib/]
| +-[man/]
| +-[share/]
+-[bin/]
+-[gimp-1/] # GIMP-1.x
| +-[bin/]
| +-[lib/]
| :
+-[gimp-2/] # GIMP-2.x
| +-[bin/]
| +-[lib/]
| :
+-[gtk1/] # cmd and libs related to gtk1
| +-[bin/]
| +-[include/]
| +-[lib/]
| +-[man/]
| :
+-[gtk2/] # cmd and libs related to gtk2
| +-[bin/]
| +-[include/]
| :
+-[include/]
+-[lib/]
:
:
Then, locate caam in /usr/local/caam/bin.
gtar zxpfC caam20150311.tar.gz /usr/local or hg clone http://www.yatex.org/hgrepos/caam /usr/local/caam
もし、ソースビルドで管理しているアプリケーションのインストールPREFIX
が /usr/local だとしたら、上記のように
/usr/local/caam 以下にcaamをインストールし、
/usr/local/caam/bin/にPATHを通して使う。
If your local application's prefix is /opt/sfw, then locate caam at /opt/sfw/caam.
caam は、デフォルトで ./configure と make
を続けて呼ぶ。caamには、caam自身のオプションに続けてその場の
configure に与えるオプションを渡せばよい。
caam自身のオプションは以下の通り。
| オプション | 意味 |
|---|---|
| -c | configureのみ(makeしない) |
| -m | makeのみ(configureしない) |
| -g | makeでなくgmakeを呼ぶ |
| -jN | make -jN で呼ぶ |
| -t TGT | make allのかわりに make TGTで起動 |
| -s SEC | configure後、SEC 秒間停止する |
| -S | configure後 suspend する(fgで継続) |
| -l | configureで生成されたlibtoolではなくシステムの libtool を利用させる |
| -mai | make all installする |
| -maic | make all install cleanする |
| -gmai | gmake all installする |
| -gmaic | gmake all install cleanする |
| -cmake | cmakeを利用する |
| -p PREFIX | configureの場合は
--prefix=、cmakeの場合は
-DCMAKE_INSTALL_PREFIX= にインストール先を指定する
|
| -objdir | サブディレクトリを作ってそこでビルド (gccなどはソースディレクトリではconfigureさせてもらえない) |
たとえば、dual coreなマシンで
configure --prefix=/opt/hoge && gmake -j3 all &
gmake install するなら、
caam -gmai -j3 --prefix=/opt/hoge
とする。
なお、このスクリプトを使いたいということはインストールPREFIXを変えたい のが主目的であるはずなので、prefixを変えるためのオプション-pを用いて
caam -gmai -j3 -p /opt/hoge
としてもよい(以下同様)。configureの場合は
--prefix=/opt/hoge が、cmakeの場合は
-DCMAKE_INSTALL_PREFIX=/opt/hoge が自動的に付け足される。
独自ビルドで gtk2 のライブラリがすべて /usr/local/gtk2
に入っているときにgtk2もののアプリケーションをビルドするなら
たとえばこうする(systemのPREFIXが /usr/local の場合)。
CAAM_ADD=gtk2 caam -maic --prefix=/usr/local/gqview2
こうすると、CFLAGS(とCPPFLAGS)に -I/usr/local/gtk2
を必ず付け、 LDFLAGSに -L/usr/local/gtk2 -Wl,-rpath=/usr/local/gtk2
を必ず付けた状態で configure と make が呼ばれる。もちろん、上記の例が
うまく行くためにはgtk2関連のライブラリをすべて
CAAM_ADD=gtk2 caam -maic --prefix=/usr/local/gtk2
でインストールしておく必要がある。逆にいえばgtk2ライブラリは ほぼ全て上記コマンドラインでインストールすることができ、gtk2 を利用するアプリケーションは、
CAAM_ADD=gtk2 caam -maic --prefix=/usr/local/application
でインストールすることができる。実行時のライブラリパスも /usr/local/gtk2 として埋め込まれる。
gtk1とgtk2を両方同時に使いたいという場合は、双方を隔離してインストー ルする必要があるのでcaamのような機構が有用なのである。