autoconf-如何生成模板并将其复制到正确的目录中

问题描述 投票:0回答:1

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

Source: myproject
Section: misc
Priority: optional
Maintainer: Paul Walker <[email protected]>
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个回答
-1
投票

这是最重要的食物链问题。

Debian打包工具被设计为构建Debian软件包的顶级工具,并且控制文件在整个软件包构建过程中都应该保持不变。如果您只希望构建二进制软件包,则可能会绕开它,但是修改构建依赖项将毫无意义,因为它们是较早评估的。

正常的构建过程将distclean构建树,以便记录源包中的更改,然后重新运行configure并进行构建。如果此时更新debian / control,则结果不确定。

如果必须以编程方式更新debian / control,请使用常规软件包构建中无法使用的单独机制。如果您有常规发行版,而不是从开发版本中删减软件包,则将软件包视为分开可能更有意义。

© www.soinside.com 2019 - 2024. All rights reserved.