我有一个小型的CMake项目,具有不同的构建类型debug
和release
。我还为此项目提供了Debian软件包。为release
构建Debian软件包并将其提供到我自己的Debian存储库中是完美的。
现在,由于调试目的,我还想为debug
提供另一个Debian软件包,并使用不同的软件包名称。例如,我的项目名为myproject
,调试包应为myproject-debug
。
我已经在debian/control
文件中阅读了有关如何解决此问题的文档。我想在每个软件包上都使用Replaces: ...
,反之亦然,因此您一次只能安装两个软件包之一。因此,myproject
或myproject-debug
(但不能同时使用两者)使用完全相同的文件和文件名,但是只有二进制文件在myproject-debug
程序包中具有更多调试信息和调试打印信息。其他所有内容都应该相同。相同的文件名,相同的路径等。
现在的问题是,我不知道debian/rules
文件的外观,首先要在文件夹中构建myproject
程序包,然后使用不同的CMake来构建myproject-debug
选项(-DCMAKE_BUILD_TYPE=debug
)放在另一个文件夹中,因此文件名可以并且应该保持不变。
Debian文档中有这个CMake tutorial,但这不符合我的要求。因为在本教程中,所有内容都将仅构建在一个文件夹中,并且在此文件夹中有不同的文件。然后,将使用不同的.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
并在不同的文件夹中运行这两个文件夹,这样我就可以将两个文件夹都添加到两个不同的程序包中。
或者也许还有我无法想象的更好的解决方案?