【问题标题】:Automake: Remove configure script checks with make distAutomake:使用 make dist 删除配置脚本检查
【发布时间】:2013-05-11 22:53:31
【问题描述】:

我想知道在运行make dist 时是否有办法从configure 脚本中删除依赖项检查。目的是版本库中的包版本使用emacs 执行lisp 文件并生成.c 文件,而这些生成的源文件在运行make dist 时包含在tarball 中。 Automake 支持在输出 tarball 中包含构建文件,只需在 Makefile 中设置 EXTRA_DIST。我希望能够仅在有人尝试从存储库编译时检查emacs,但不能在有人从 tarball 编译时检查。

更具体地说,在configure.ac 我有:

 AM_PATH_LISPDIR
 AS_IF([test "$EMACS" = no], [AC_MSG_ERROR([cannot find emacs])])

但我希望在运行make dist 之后不要进行该检查。有什么办法可以做到这一点?如果不是,这个案子一般是怎么处理的?

【问题讨论】:

    标签: automake


    【解决方案1】:

    我想出的最佳方法是检查Bootstrap 文件是否存在。运行make dist 后,Bootstrap 将从 tarball 中删除。

    AC_CHECK_FILE([Bootstrap])
    if test "$ac_cv_file_Bootstrap" == yes ; then
        <check for emacs>
    fi
    

    【讨论】:

      【解决方案2】:

      如果我在configure.ac 中找到该工具,我通常会设置一个条件:

      AM_PATH_LISPDIR
      AM_CONDITIONAL([HAVE_EMACS_IN_REPOSITORY], [test "x$EMACS" != xno -a -d ".git"])
      AS_IF([test "$EMACS" = no -a -d ".git"], [AC_MSG_ERROR([cannot find emacs])])
      

      然后在Makefile.am

      if HAVE_EMACS_IN_REPOSITORY
      
      Execute lisp files...
      
      Generate .c files...
      
      endif
      

      通常configure.git 位于同一位置。如果没有,可以调整路径。

      【讨论】:

      • 这不是我想要的。如果源来自存储库,那么我想无条件地执行 lisp 文件,如果找不到 emacs,则失败并出现错误。
      • $IN_REPOSITORY 设置在哪里?这个变量真的是我所需要的。有了它,我可以将AM_PATH_LISPDIR 包装起来,以便仅在存储库中检查它。
      • @Brad,你从来没有具体说明你正在处理什么样的存储库,所以我无法回答这个问题。是 git、subversion、Mercurial、CVS、RCS、VSS?
      • 恰好是一个git仓库。
      • 我通常在 tarball 中包含引导脚本。我更容易将其视为corresponding source,即使它只是调用autoreconf
      猜你喜欢
      • 1970-01-01
      • 2016-12-23
      • 2015-06-27
      • 2011-03-16
      • 2018-01-15
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      相关资源
      最近更新 更多