【问题标题】:autoconf - how to generate template and copy it to proper directoryautoconf - 如何生成模板并将其复制到正确的目录
【发布时间】:2019-10-07 15:29:14
【问题描述】:

我在 C 项目中使用 autoconf 和 automake。我想创建一个 .deb 包,所以我有以下control.in 文件:

Source: myproject
Section: misc
Priority: optional
Maintainer: Paul Walker <pwalk@test.it>
Build-Depends: debhelper (>=9), autotools-dev@MORE_DEPENDENCIES@
Standards-Version: 1.0.0
Homepage: https://www.my-website.it/

...

我想用 autoconf 配置这个文件,因为根据我设置的一些配置时间标志,可能有 MORE_DEPENDENCIES

这个control.in 文件位于stubs/ 文件夹中,在替换MORE_DEPENDENCIES 变量后,我还想将生成的control 文件复制到最终目标文件夹debian/ 以创建.deb包。

所以基本上我试图让 autoconf 执行以下操作:

  1. {srcdir}/stubs/ 包含为输入文件夹,以便替换位于该处的.in 文件中的宏
  2. 配置存根{srcdir}/stubs/control.in,替换其中的任何宏,使用替换的宏生成文件{srcdir}/stubs/control
  3. {srcdir}/stubs/control复制到最终目标文件夹{srcdir}/debian/control

我一直在寻找示例或在官方文档中,但仍然找不到如何在根源文件夹之外配置 .in 文件。

关于“如何将最终文件复制到 debian/ 文件夹”我想我可以使用 a symlink 吗?有没有更好的办法?

【问题讨论】:

    标签: linux makefile autoconf automake


    【解决方案1】:

    这是食物链顶端的问题。

    Debian 打包工具被设计为构建 Debian 包的顶级工具,并且控制文件应该在包构建的整个运行过程中保持不变。如果您只想构建二进制包,您可能会绕开这个问题,但是修改构建依赖项没有任何意义,因为它们已被较早地评估。

    正常的构建过程会distclean构建树以便记录源包中的变化,然后重新运行configure并构建。如果此时更新 debian/control,结果未定义。

    如果您必须以编程方式更新 debian/control,请使用常规包构建无法访问的单独机制。如果您有常规版本而不是从开发版本中删除包,那么将包单独处理可能更有意义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-12
      • 2018-03-02
      • 2010-10-02
      • 2012-02-08
      • 2017-02-14
      • 1970-01-01
      相关资源
      最近更新 更多