我有一个具有不同构建类型的小型 CMake 项目debug
和release
. 我还为这个项目提供了一个 Debian 软件包。为我自己的 Debian 存储库构建 Debian 软件包release
并提供它非常完美。
debug
现在,出于调试目的,我还想为 提供另一个 Debian 软件包,并使用不同的软件包名称。比如我的项目叫myproject
,调试包应该是myproject-debug
.
我已经在文件中阅读了有关如何解决此问题的debian/control
文档。我想Replaces: ...
在每个包上使用反之亦然,这样您一次只能安装两个包中的一个。因此,要么 要么myproject
,myproject-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
并在不同的文件夹中运行,这样我就可以将两个文件夹添加到两个不同的包中。
或者也许还有我无法想象的更好的解决方案?