我正在更新项目以使用自动工具,并为了保持与以前版本的向后兼容性,我希望用户能够运行./configure --foo=bar
来设置构建选项。创建自定义./configure命令行参数
基于阅读文档,它看起来像我就可以建立./configure --enable-foo
,./configure --with-foo
,或./configure foo=bar
没有任何问题,但我没有看到任何东西使所期望的行为(特别是具有选择权前双破折号--
)。
有什么建议吗?
我正在更新项目以使用自动工具,并为了保持与以前版本的向后兼容性,我希望用户能够运行./configure --foo=bar
来设置构建选项。创建自定义./configure命令行参数
基于阅读文档,它看起来像我就可以建立./configure --enable-foo
,./configure --with-foo
,或./configure foo=bar
没有任何问题,但我没有看到任何东西使所期望的行为(特别是具有选择权前双破折号--
)。
有什么建议吗?
有没有办法,我知道configure.ac
这样做的。您必须修补configure
。这可以通过在运行autoreconf
之后在bootstrap.sh
中运行修补脚本来完成。您必须将您的选项添加到ac_option
处理循环中。对于--x
的情况下看起来像一个有前途的一个复制或更换注入新的选项,类似:
--foo=*)
my_foo=$ac_optarg ;;
还有一些剔除了命令行ARGS时configure
有时需要重新调用代码。确定是否应剥离--foo
将由您决定。我想这可能是他们为什么不首先考虑这个问题的原因。
如果是我,我会尝试和游说AC_ARG_WITH
(例如--with-foo=bar
)。这似乎少了很多工作。
为了做到这一点,你必须添加到您的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-调试,它将设置在config.h文件上调试常量。 那么你必须代码是这样的:
#include "config.h"
#ifdef DEBUG
// do debug
#else
// no debug
#endif
是的,我读了关于AC_ARG_ENABLE和AC_ARG_WITH。但是,这不是我要找的。我不想选择以''enable''或''with''开始,我希望用户能够传递任意字符串。 – profzoom 2014-12-11 05:52:25
那么你该如何创建自定义条目? – 2014-12-11 05:58:15
谢谢!我继续前进,只是使用了AC_ARG_WITH。 – profzoom 2014-12-12 17:14:06