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