Git 使用Makefile.in和configure.ac从零开始清理并构建项目

Git 使用Makefile.in和configure.ac从零开始清理并构建项目,git,autotools,Git,Autotools,在克隆了一个开源项目(使用Git)之后,我想构建它 此外,我希望能够从头开始,然后再试一次(用于git bisect) 干净签出包含Makefile.in和configure.ac,但不包含configure 假设项目中没有任何容易找到的说明,那么做这些事情的秘诀是什么?这是标准吗?有时可能需要一些常见的变体吗?虽然我看到一些帖子建议使用autoeconf-fi,但我使用autoconf得到了更好的结果,因为make步骤失败于前者(基本描述请参见和)。也许在一般情况下,如果一个不起作用,那么尝试

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

此外,我希望能够从头开始,然后再试一次(用于git bisect)

干净签出包含
Makefile.in
configure.ac
,但不包含
configure


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

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

以下是一些常见步骤:

## 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
  • ,(两者都表示自动循环与自动循环)

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

正如其他人在评论中所指出的那样,
configure.ac
文件通常伴随着生成配置脚本的
autogen.sh
bootstrap.sh
脚本

例如,根据约定,倾向于依赖于
autogen.sh
脚本,因此可以使用以下一组命令来构建项目(请随意查看GNOME,以了解根构建目录在该约定下通常的外观):

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


如果在您的特定项目中没有这样的脚本,并且无法回答您的问题,那么如果您能够提供一个链接,指向您查询的具体项目源,那么它可能会很有用。

通常还有一个shell脚本,名为
bootstrap
bootstrap.sh
autogen.sh
,使签出状态变为准备配置状态。这些脚本通常只需使用需要执行的任何附加步骤来包装
autoeconf
/
autoconf
。有用吗?:如果
autoeconf
不起作用,则仅运行
autoconf
不太可能起作用。如果在运行
autoeconf
后无法直接构建包(特别是Intltool的情况),那么维护人员通常会提供一个名为
autogen.sh
bootstrap.sh
的脚本,该脚本运行
autoeconf
plus,执行任何其他必须执行的步骤。
./autogen.sh --prefix=$PREFIX && make && make install