首页 > 解决方案 > 使用 CMake 为不同的构建类型构建了两个不同的 Debian 包

问题描述

我有一个具有不同构建类型的小型 CMake 项目debugrelease. 我还为这个项目提供了一个 Debian 软件包。为我自己的 Debian 存储库构建 Debian 软件包release并提供它非常完美。

debug现在,出于调试目的,我还想为 提供另一个 Debian 软件包,并使用不同的软件包名称。比如我的项目叫myproject,调试包应该是myproject-debug.

我已经在文件中阅读了有关如何解决此问题的debian/control文档。我想Replaces: ...在每个包上使用反之亦然,这样您一次只能安装两个包中的一个。因此,要么 要么myprojectmyproject-debug但不能同时使用两者,使用完全相同的文件和文件名,但只有二进制文件在myproject-debug包中有更多的调试信息和调试打印。其他一切都应该相同。相同的文件名,相同的路径等。

现在的问题是我不知道debian/rules文件应该是什么样子,首先myproject在一个文件夹中构建包,然后在不同的文件夹中myproject-debug使用不同的 CMake 选项(-DCMAKE_BUILD_TYPE=debug)构建包,因此文件名可以并且应该保持不变。

Debian 文档中有这个CMake 教程,但这不符合我的要求。因为在本教程中,所有内容都将构建在一个文件夹中,并且在这个文件夹中包含不同的文件。然后.install将使用不同的文件将所需的文件复制到每个包中。但是因为我对每个包都有相同的二进制文件名,myproject所以myproject-debug本教程并不真正适合我的需要。

我的debian/rules文件中已经有以下几行:

override_dh_auto_configure:
    dh_auto_configure -- -DCMAKE_BUILD_TYPE=release

但是我怎样才能使用两种不同的构建类型来运行两个不同的构建呢?

例如,像这样,将其拆分:

override_dh_auto_configure_release:
    dh_auto_configure -- -DCMAKE_BUILD_TYPE=release

override_dh_auto_configure_debug:
    dh_auto_configure -- -DCMAKE_BUILD_TYPE=debug

并在不同的文件夹中运行,这样我就可以将两个文件夹添加到两个不同的包中。

或者也许还有我无法想象的更好的解决方案?

标签: cmakedebiandebian-stretch

解决方案


推荐阅读