Построил два разных пакета Debian для разных типов сборки, используя CMake - PullRequest
0 голосов
/ 05 января 2019

У меня небольшой проект CMake с разными типами сборки debug и release. Я также предоставляю пакет Debian для этого проекта. Сборка пакета Debian для release и предоставление его в моем собственном репозитории Debian прекрасно работает.

Теперь я также хочу предоставить еще один пакет Debian для debug из-за целей отладки с другим именем пакета. Например, мой проект называется 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

И запускайте обе папки в разных папках, чтобы я мог добавить обе папки в два разных пакета.

Или, может быть, есть даже лучшее решение, которое я пока не могу себе представить?

...