0

configure.ac に "stdout" という構成オプションを設定して、変数を "1" または "0" に定義したいと考えています。これがconfigure.acに入れたものです:

 AC_ARG_ENABLE([stdout],
   [AS_HELP_STRING([--enable-stdout[=yes/no], --disable-stdout],
     [Enable or disable output to stdout. Default is disabled.])],
   [ if test "x$enableval" = "yes" ; then
       AC_DEFINE([WRITETOSTDOUT],[1],[Enable output to stdout])
     else
       AC_DEFINE([WRITETOSTDOUT],[0],[Disable output to stdout])
     fi ],
   [AC_DEFINE([WRITETOSTDOUT],[0],[Enable output to stdout])])

私が期待しているのはconfigure、オプション--enable-stdoutorに追加すると--enable-stdout=yesが得られ、or#define WRITETOSTDOUT 1を追加するとが得られることです。--disable-stdout--enable-stdout=no#define WRITETOSTDOUT 0

(パラメーターなしで)結果が生じることを除いて、期待どおりに機能します--enable-stdout#define WRITETOSTDOUT 0

もう 1 つの観察結果は、入力configure --enable-stdして押すと競合することです。./configure --enable-stdout=

シンプルな enable-option を機能させるにはどうすればよいですか?

4

1 に答える 1

1

秘密は、シェル変数enable_foo--enable-fooまたは--disable-fooという名前を付ける必要があることです。そう:

AC_ARG_ENABLE([stdout],
 [AS_HELP_STRING([--enable-stdout=yes|no],
                 [Enable or disable output to stdout. Default is disabled.])],
 [enable_stdout="$enableval"],
 [enable_stdout="no"])

 ...
 stdout_val=0
 if test "x$enable_stdout" = "xyes" ; then
   stdout_val=1
 fi
 AC_DEFINE_UNQUOTED([WRITETOSTDOUT],[$stdout_val],[Enable output to stdout])

Autotools Mythbusterページには、この例がいくつかあります。

于 2013-02-07T22:36:10.810 に答える