読者です 読者をやめる 読者になる 読者になる

autotools + config.nice

Autotools

autotools のメモ2

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

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

  
#----------------------------------------------------------------  
# Create config.nice  
#----------------------------------------------------------------  
conf_file="config.nice"  
rm -f $conf_file  
cat >$conf_file<> $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 導入メモでした。