是不是只写debian/rules就可以编译两次,单独构建包?

Is it possible to compile twice and build separate packages only by writing debian/rules?

让我详细说明我的问题,并进一步详细说明我试图完成的工作。

我的最终目标是拥有两个 debian 软件包:一个包含为 x86 构建的二进制文件,另一个包含为 ARM 构建的二进制文件。在 debian/control 中,我定义了两个不同的包,两个包的体系结构当前都设置为“任意”。

我尝试按照 https://wiki.debian.org/PkgSplit and also looking at the rules.multi2 example for debhelper (http://www.fifi.org/doc/debhelper/examples/rules.multi2) 上的说明进行操作,但到目前为止没有任何运气。

源是一个 Qt 项目,将同时为 x86 和 ARM 部署。

我使用 dpkg-buildpackage 构建成功,但无论我如何尝试,我的源代码都只编译了一次。

达到我的目标的理想方法是什么,是否“简单”地在 debian/rules 中输入正确的信息以使其起作用,还是我必须采取其他方法?我不太确定这是否可能;我只是走错了路(我是 debian 打包世界的新手)。

(我故意不包括我的 debian/control 和 debian/rules 在这个阶段,如果需要我会提供更多的细节,因为他们在这个阶段有点混乱)。

编辑: 我被这个评论引导到 PkgSplit https://askubuntu.com/questions/246718/change-environment-variables-in-debian-rules-according-to-debian-control-targets/908351#908351 但对我来说,答案有点神秘,因此非常感谢您的帮助。

没有

dpkg-buildpackage 的单个 运行 将为单个体系结构创建二进制包(amd64,或 i386,或 armhfs390x 或其他)。

只需多次调用 dpkg-buildpackage 即可(交叉)构建多个架构:

dpkg-buildpackage -rfakeroot
dpkg-buildpackage -rfakeroot --host-arch i386
dpkg-buildpackage -rfakeroot --host-arch armhf

这将创建(最多)3 个包:一个本地架构(最有可能:amd64),一个用于 x86_32(又名 i386),一个用于覆盆子 (armhf).

顺便说一句,PkgSplit 文档讨论了为同一架构创建多个包。例如当你有一个库时,你通常想把它分成库部分(安装 libfoo.so.1)和开发部分(安装头文件)。