【问题标题】:autoconf without install files没有安装文件的自动配置
【发布时间】:2014-04-19 04:35:26
【问题描述】:

我最近开始使用 automake 和 autoconf,我对如何分发代码有点困惑。

通常当我得到一个与配置文件一起使用的代码时,我得到的唯一东西是一个配置文件和代码本身与 Makefile.am 等等。通常我会这样做

./configure
make
sudo make install

仅此而已,但是当我从 configure.ac 文件生成配置时,它会丢弃很多我认为只是临时的文件,但是如果我将代码提供给合作伙伴并且他进行配置,它就不起作用,它需要重新制作 autoreconf 或拥有所有这些文件(即 instal.sh、config.sub...)。

有什么我遗漏的吗?如何轻松、干净地分发代码? 我搜索了很多,但我认为我正在寻找正确的东西,因为我找不到任何有用的东西。

提前非常感谢!

【问题讨论】:

    标签: configure autoconf automake


    【解决方案1】:

    Automake 提供了一个make dist 目标。这会自动从您的项目中创建一个.tar.gz。此存档的设置方式使收件人可以简单地提取它并运行通常的./configure && make && make install 调用。

    通常不建议将 Autotools 生成的文件检查到您的存储库中。这是因为它们是派生对象。你不会签入你的.o 文件!

    通常,最好提供一个autogen.sh 脚本,该脚本执行在新版本控制系统签出中重新创建 Autotools 构建基础架构所需的任何操作。通常,它可以很简单:

    #!/bin/sh
    autoreconf -i
    

    然后设置chmod +x,从干净结账编译的指令可以是./autogen.sh && ./configure && make

    【讨论】:

    • 感谢您的回答。我在 git 存储库中有我的项目,我想拥有运行常用命令所需的东西。是否可以创建所需的内容并将其添加到存储库而不是 tar.gz?
    • 这是可能,但通常是一个坏主意。请查看更新的答案。
    • 好的,我会这样做的。我见过几个带有单个配置文件的软件包,但它可能是以不同的方式生成的。然后我将添加自动生成脚本。谢谢!
    • autogen.sh 已被弃用,请改用 bootstrap 名称。此外,做一个make distcheck 是一个好主意,它不仅会打包源代码以进行分发,它还会将其提取到另一个目录中,从那里构建它,然后运行测试(如果有的话),并且只然后,将打印 .tar.gz 已准备好分发。
    • @PeterT.B.Brett Autotools FAQ 说“bootstrap 这个名字比‘autogen.sh’更受欢迎,因为还有一个名为 AutoGen 的独立软件包。”。
    猜你喜欢
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多