autotools のメモ2

configure.in に ./configure [引数] コマンドを記録する処理を加えた。

以下のコードを configure.in に追加
configure.in

#----------------------------------------------------------------
# Create config.nice
#----------------------------------------------------------------
conf_file="config.nice"
rm -f $conf_file
cat >$conf_file<<EOF
#! /bin/sh
#
# Created by configure
 
EOF
if test -n "$CC"; then
	echo "CC=\"$CC\"; export CC" >> $conf_file
fi
if test -n "$CFLAGS"; then
	echo "CFLAGS=\"$CFLAGS\"; export CFLAGS" >> $conf_file
fi
if test -n "$CPPFLAGS"; then
	echo "CPPFLAGS=\"$CPPFLAGS\"; export CPPFLAGS" >> $conf_file
fi
if test -n "$LDFLAGS"; then
	echo "LDFLAGS=\"$LDFLAGS\"; export LDFLAGS" >> $conf_file
fi
if test -n "$LTFLAGS"; then
	echo "LTFLAGS=\"$LTFLAGS\"; export LTFLAGS" >> $conf_file
fi
if test -n "$LIBS"; then
	echo "LIBS=\"$LIBS\"; export LIBS" >> $conf_file
fi
if test -n "$INCLUDES"; then
	echo "INCLUDES=\"$INCLUDES\"; export INCLUDES" >> $conf_file
fi
if test -n "$NOTEST_CFLAGS"; then
	echo "NOTEST_CFLAGS=\"$NOTEST_CFLAGS\"; export NOTEST_CFLAGS" >> $conf_file
fi
if test -n "$NOTEST_CPPFLAGS"; then
	echo "NOTEST_CPPFLAGS=\"$NOTEST_CPPFLAGS\"; export NOTEST_CPPFLAGS" >> $conf_file
fi
if test -n "$NOTEST_LDFLAGS"; then
	echo "NOTEST_LDFLAGS=\"$NOTEST_LDFLAGS\"; export NOTEST_LDFLAGS" >> $conf_file
fi
if test -n "$NOTEST_LIBS"; then
	echo "NOTEST_LIBS=\"$NOTEST_LIBS\"; export NOTEST_LIBS" >> $conf_file
fi
 
# Retrieve command-line arguments.
eval "set x $[0] $ac_configure_args"
shift
 
for arg
do
  	var=`eval "echo ${arg}"`
	echo "\"$var\" \\" >> $conf_file  	
done
 
echo '"[$]@"' >> $conf_file
chmod +x $conf_file

参考:APR

CC, CFLAGS 等に文字列が入っていたら、export するよう書き込み
$ac_configure_args に ./configure の引数が入ってるので、for で回して書き込み
var=`eval “echo $var”` で ‘ を取り除いて書き込み
最後に “$@” を書き込んで終了。

なぜ最後に “$@” をつけるのか、はっきりとは分からず。。。
“$@”じゃなく”"だと、build_alias= など余計なものも入るので、意味はある模様。
“” じゃなく空白なら大丈夫だった。
$@は、引数を表すものだから、./config.nice の場合、何も引数がないので、
空白すなわち \0 的な役割になるのかな?

変更したら autoreconf で configure 作り直し

$ autoreconf -i

autoreconf が使えなかったら

    $ aclocal
    $ autoconf

configure する

$ ./configure --prefix=/usr/local/hello

config.nice が出来ているか確認

目視。or
$ ls | grep nice

次からの configure は、これだけでOK。

    $ ./config.nice

実にらくちん、手間いらず!(笑

–with とかいっぱいつけてると次に ./configure するときよくオプション忘れてるんですよね。
なので、結構重要な機能だと個人的には思ってます。

ということで config.nice 導入メモでした。

関連エントリー:

autotools + with-mysql

autotools + 使い方

Automake + 条件コンパイル

シェルスクリプト えとせとら

Git 使い方アレコレ

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> <pre lang="" line="" escaped="" highlight="">