我正在更新项目以使用autotools,并且为了保持与以前版本的向后兼容性,我希望用户能够运行./configure --foo=bar
来设置构建选项。
根据阅读文档,看起来我可以毫无问题地设置./configure --enable-foo
,./configure --with-foo
或./configure foo=bar
,但我没有看到任何允许所需行为的内容(特别是在选项之前有双击--
。
有什么建议吗?
答案 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