./configure; make; make install再考

久しぶりに日記書きます。軽いネタで。

./configureは何となくカレントディレクトリで行なうような習慣があるけど、実際のところ行儀の良いモノであれば、カレントディレクトリ以外で行っても良い。

この場合、ソースツリーのディレクトリとビルドするディレクトリは別になる。

これは、configureに異なるオプションを渡してビルドしたい場合に便利だったりする(特に開発時には)。

あと、ソースディレクトリとビルドディレクトリが分かれているとSCM的に気分が良かったり。

GNUが誇るスーパープログラム、GNU Helloの場合はこんな感じ。

$ tar zxf hello-2.4.tar.gz
$ cd hello-2.4
$ mkdir _enable_nls _disable_nls
$ cd _enable_nls
$ ../configure --prefix=$HOME/hello1; make install
$ cd ../_disable_nls
$ ../configure --prefix=$HOME/hello2 --disable-nls; make install
$ ~/hello1/bin/hello
世界よ、こんにちは!
$ ~/hello2/bin/hello
Hello, world!