创建自定义./configure命令行参数

时间:2014-12-11 05:32:24

标签: autoconf

我正在更新项目以使用autotools,并且为了保持与以前版本的向后兼容性,我希望用户能够运行./configure --foo=bar来设置构建选项。

根据阅读文档,看起来我可以毫无问题地设置./configure --enable-foo./configure --with-foo./configure foo=bar,但我没有看到任何允许所需行为的内容(特别是在选项之前有双击--

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我无法在configure.ac中知道这样做。你必须修补configure。这可以通过在运行bootstrap.sh后在autoreconf中运行修补脚本来完成。您必须将选项添加到ac_option处理循环中。 --x的情况看起来很有希望复制或替换以注入新选项,例如:

--foo=*)
      my_foo=$ac_optarg ;;

当有时需要重新调用configure时,还有一些代码会删除命令行参数。您应该决定是否应该删除--foo。我认为这可能是他们首先不允许这样做的原因。

如果是我,我会尝试游说AC_ARG_WITH(例如--with-foo=bar)。这似乎少了很多工作。

答案 1 :(得分:-1)

为了做到这一点,你必须添加到你的configure.ac这样的东西:

# Enable debugging mode
AC_ARG_ENABLE(debug,
  AC_HELP_STRING([--enable-debug],[Show a lot of extra information when running]),
  AM_CPPFLAGS="$AM_CPPFLAGS -DDEBUG"
  debug_messages=yes,
  debug_messages=no)

AC_SUBST(AM_CPPFLAGS)
AC_SUBST(AM_CXXFLAGS)

echo -e "\n--------- build environment -----------
Debug Mode     : $debug_messages"

这只是添加例如--enable-debug的简单示例,它将在config.h文件中设置DEBUG常量。 那么你必须编写类似这样的代码:

#include "config.h"
#ifdef DEBUG
    // do debug
#else
    // no debug
#endif