使用CMake为不同的构建类型构建了两个不同的Debian软件包

时间:2019-01-05 20:13:59

标签: cmake debian debian-stretch

我有一个小型的CMake项目,具有不同的构建类型debugrelease。我还为此项目提供了Debian软件包。为release构建Debian软件包并将其提供到我自己的Debian存储库中是完美的。

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

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

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

Debian文档中有这个CMake tutorial,但这不符合我的要求。因为在本教程中,所有内容都将仅构建在一个文件夹中,并且在此文件夹中有不同的文件。然后,将使用不同的.install文件将所需的文件复制到每个包中。但是由于每个包myprojectmyproject-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

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

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

0 个答案:

没有答案