【问题标题】:Clean and build from scratch a project with Makefile.in and configure.ac使用 Makefile.in 和 configure.ac 从头开始​​清理和构建项目
【发布时间】:2014-12-19 19:47:49
【问题描述】:

克隆一个开源项目(使用 Git)后,我想构建它。

此外,我希望能够从头开始并重试(用于 git-bisect)。

干净的结帐包含Makefile.inconfigure.ac,但不包含configure

假设该项目没有任何易于找到的说明,那么做这些事情的秘诀是什么?这很标准吗?是否存在有时可能需要的常见变体?

【问题讨论】:

  • 通常还有一个名为bootstrapbootstrap.shautogen.sh 的shell 脚本可以使结帐进入准备就绪configure 状态。这些脚本通常只是将autoreconf/autoconf 与需要执行的任何其他步骤一起包装起来。

标签: git autotools


【解决方案1】:

正如其他人已经在 cmets 中指出的那样,configure.ac 文件通常伴随着 autogen.shbootstrap.sh 脚本来生成配置脚本。

例如,GNOME project 按照惯例倾向于依赖 autogen.sh 脚本,因此可以使用以下命令集构建项目(随意查看 GNOME 的 gtk+ source code 以了解根build 目录通常看起来像在该约定下):

./autogen.sh --prefix=$PREFIX && make && make install

运行./autogen.sh 脚本后,您会看到在构建根目录中生成的configure 脚本。

如果在您的特定项目中没有这样的脚本并且不能为您回答问题,那么如果您能够提供指向您的查询具体涉及的项目源的链接可能会很有用.

【讨论】:

    【解决方案2】:

    虽然我看到一些帖子建议使用autoreconf -fi,但我只使用autoconf 会得到更好的结果,因为前者的make 步骤失败(请参阅autoconfautoreconf 了解基本描述)。也许在一般情况下,如果一个不起作用,那么尝试另一个 - 确保在两者之间进行清理,以免结果受到污染。

    以下是一些常见的步骤:

    ## clean...
    make maintainer-clean ## clean up most stuff after you have run ./configure
    git status --ignored ## see what still needs to be cleaned up
    git clean -fdX ## remove ignored files
    git clean -fdx ## remove all extra files -- including your own work (if any)
    git reset --hard ## revert all remaining files (may be destructive)
    
    ## build...
    autoconf && ./configure && make -s ## build everything
    

    【讨论】:

    • 如果autoreconf 不起作用,则仅运行autoconf 不太可能起作用。如果在运行 autoreconf 后无法立即构建包(特别是 Intltool 就是这种情况),那么维护者通常会提供一个名为 autogen.shbootstrap.sh 的脚本,该脚本运行 autoreconf plus做任何其他必须做的步骤。
    【解决方案3】:

    如果您使用的是 Git,那么您应该能够完全绕过自动工具,只需在两分步骤之间执行 git clean -xdf

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 2014-11-27
      • 2015-10-02
      相关资源
      最近更新 更多