紹介すべき最も重要な変更です.ほとんどのマクロの実装は完全に変更されまし た.コードの分解,エラーメッセージの改善,ユーザインターフェースの一貫性 などが,このことで可能になりました.残念ながら副作用として,これまで(奇 跡的に)動作していた構成物には,Autoconf 2.50でおかしくなり始めるものもあ ります.
例えば,以下の例では,メッセージが適切に引用符で囲まれていません.
AC_INIT AC_CHECK_HEADERS(foo.h,, AC_MSG_ERROR(cannot find foo.h, bailing out)) AC_OUTPUT
Autoconf 2.13は,単純にそれを無視していました.
$ autoconf-2.13; ./configure --silent creating cache ./config.cache configure: error: cannot find foo.h $
しかしAutoconf 2.50では,壊れたconfigureを生成します.
$ autoconf-2.50; ./configure --silent configure: error: cannot find foo.h ./configure: exit: bad non-numeric arg `bailing' ./configure: exit: bad non-numeric arg `bailing' $
メッセージは引用符で囲む必要があり,AC_MSG_ERROR
の呼び出しもそう
です!
AC_INIT AC_CHECK_HEADERS(foo.h,, [AC_MSG_ERROR([cannot find foo.h, bailing out])]) AC_OUTPUT
多くの多くの(いくらでも続けたい)Autoconfマクロには...少なくとも
AC_DEFUN
自身も含めて,適切な引用符がありませんでした!
$ cat configure.in AC_DEFUN([AC_PROG_INSTALL], [# My own much better version ]) AC_INIT AC_PROG_INSTALL AC_OUTPUT $ autoconf-2.13 autoconf: Undefined macros: ***BUG in Autoconf--please report*** AC_FD_MSG ***BUG in Autoconf--please report*** AC_EPI configure.in:1:AC_DEFUN([AC_PROG_INSTALL], configure.in:5:AC_PROG_INSTALL $ autoconf-2.50 $