2014-12-11 126 views
0

我正在更新项目以使用自动工具,并为了保持与以前版本的向后兼容性,我希望用户能够运行./configure --foo=bar来设置构建选项。创建自定义./configure命令行参数

基于阅读文档,它看起来像我就可以建立./configure --enable-foo./configure --with-foo,或./configure foo=bar没有任何问题,但我没有看到任何东西使所期望的行为(特别是具有选择权前双破折号--)。

有什么建议吗?

回答

2

有没有办法,我知道configure.ac这样做的。您必须修补configure。这可以通过在运行autoreconf之后在bootstrap.sh中运行修补脚本来完成。您必须将您的选项添加到ac_option处理循环中。对于--x的情况下看起来像一个有前途的一个复制或更换注入新的选项,类似:

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

还有一些剔除了命令行ARGS时configure有时需要重新调用代码。确定是否应剥离--foo将由您决定。我想这可能是他们为什么不首先考虑这个问题的原因。

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

+0

谢谢!我继续前进,只是使用了AC_ARG_WITH。 – profzoom 2014-12-12 17:14:06

-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-调试,它将设置在config.h文件上调试常量。 那么你必须代码是这样的:

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

是的,我读了关于AC_ARG_ENABLE和AC_ARG_WITH。但是,这不是我要找的。我不想选择以''enable''或''with''开始,我希望用户能够传递任意字符串。 – profzoom 2014-12-11 05:52:25

+0

那么你该如何创建自定义条目? – 2014-12-11 05:58:15