zoukankan      html  css  js  c++  java
  • 难题autoconf、automake、libtool

     1、./configure 脚本生成 自定义宏(Defining C Preprocessor Symbols):
         在 configure.in,通过 AC_DEFINE([STUDY],[yes],[define test]) 定义。 这个例子中定义个 STUDY的宏,值为 yes。执行 autoreconf ,然后configure后,输入的config.h中,基本就是下面的样子:
    /* define test */
    #define STUDY yes

         重点: gnu风格的程序,通过 configure & make 编译程序。configure分析系统环境,并保存结果,供源代码使用。AC_DEFINE 是保存结果的方式之一。

    2、./configure 使用 --with-package功能: 
         AC_ARG_WITH (package, help-string, [action-if-given], [action-if-not-given]) 有4个参数,参考官方说明,比较容易理解。但是有点小麻烦,如--with-package=ABC,如果获取 '='后面的值,成为一个问题。看官方例子:

    AC_ARG_WITH([readline],
        [AS_HELP_STRING([
    --with-readline],
            [support fancy command line editing @
    <:@default=check@:>@])],
        []
    ,
        [with_readline
    =check])

    LIBREADLINE
    =
    AS_IF([test 
    "x$with_readline" != xno],
        [AC_CHECK_LIB([
    readline], [main],
        [AC_SUBST([LIBREADLINE]
    , ["-lreadline -lncurses"])
            AC_DEFINE([HAVE_LIBREADLINE]
    , [1],
                 [Define 
    if you have libreadline])
        ]
    ,
        [
    if test "x$with_readline" != xcheck; then
            AC_MSG_FAILURE(
                [
    --with-readline was given, but test for readline failed])
        fi
        ]
    , -lncurses)])

         其中 with_readline=check  和 [test "x$with_readline" != xno] 两行说明,可以通过 $with_<pakcage> shell变量,来获取命令行中的值(= 后面的部分)。经过实践:
                   如果没有指定 --with-<package>,则 $with_<package>为空,
                   如果指定 --without-<package>,则 $with_<package>为no
                   如果指定 --with-<package>,则 $with_<package>为yes,
                   如果指定 --with-<package>=ABC,则 $with_<package>为'ABC',
        重点: 如何通过命令行,对源代码配置进行适当的配置,$with_<package> 之类的参数提供一种沟通方式,让编译者控制源代码的生成。当然这个也需要用到 AC_DEFINE之类的命令。

  • 相关阅读:
    VC++中使用内存映射文件处理大文件
    802.1x协议解析
    Jscript中window.setInterval和window.setTimeout区别
    在C#中使用代理的方式触发事件
    JavaScript实用的一些技巧
    控制C#编的程序内存的占用
    纯C#钩子实现及应用(转)
    DES的建立过程
    C# 显示占用内存
    解决“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”
  • 原文地址:https://www.cnblogs.com/thh/p/1523181.html
Copyright © 2011-2022 走看看