开发者社区 问答 正文

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

我在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根据我设置的一些configure-time标志。

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

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

包含{srcdir}/stubs/为输入文件夹,以便替换.in坐在那里的文件中的宏 配置存根{srcdir}/stubs/control.in,替换其中的任何宏,{srcdir}/stubs/control使用替换的宏生成文件 复制{srcdir}/stubs/control到最终目标文件夹{srcdir}/debian/control 我一直在寻找示例或在官方文档中,但仍然找不到如何.in在根源文件夹之外配置文件。

关于“如何将最终文件复制到debian /文件夹”,我想我可以使用符号链接?有什么更好的办法吗?

展开
收起
祖安文状元 2020-01-07 13:27:18 589 分享 版权
1 条回答
写回答
取消 提交回答
  • 这是最重要的食物链问题。

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

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

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

    2020-01-07 13:27:47
    赞同 展开评论
问答地址: