Next: , Up: Autoconf 2.13


15.6.1 引用符で囲むことの変更

紹介すべき最も重要な変更です.ほとんどのマクロの実装は完全に変更されまし た.コードの分解,エラーメッセージの改善,ユーザインターフェースの一貫性 などが,このことで可能になりました.残念ながら副作用として,これまで(奇 跡的に)動作していた構成物には,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
     $