2013-12-02 3 views
1

У меня есть большой проект, который содержит много библиотек, от которых зависит главный двоичный файл. Я хотел бы знать, какой правильный способ справиться с этим в панели запуска, чтобы я мог создавать библиотеки, а затем основной двоичный код и предлагать каждый debian pacakge на ppa.launchpad.net: Несколько зависимостей в одном большом проекте ...?

Вы можете увидеть проект в вопросе lp: snapcpp (https://code.launchpad.net/snapcpp/). В snacpp у нас есть «snapwebsites», система CMS CMS, которая прикрепляется к базе данных Cassandra через нашу библиотеку «libQtCassandra». «snapwebsites» зависит от libQtCassandra, так как libltd и других. Каждая из этих библиотек должна быть отдельными пакетами debian. Каждый проект имеет свою собственную папку «debian», но в это время нет корневой папки debian.

Как я могу заставить это работать на стартовой панели, для которой требуется корневая папка debian? Нужно ли мне создать проект debian в корне, в котором перечислены все зависимости? Если нет, мне нужно разбить каждый проект на свою ветку с помощью bzr? Если я сделаю последнее, как я могу назвать эти debencency debs для сборки (другими словами, как мне сказать рецепт snapwebsites, что ему нужно установить libQtCassandra и его пакеты зависимостей)?

Спасибо!

+1

Доступны ли эти зависимости в стандартных основных хранилищах? – Braiam

+0

Braiam: нет, зависимости являются частью основного проекта. Посмотрите на каждый подпроекте в багажнике: http://bazaar.launchpad.net/~doug/snapcpp/trunk/files Например, snapCMakeModules является зависимостью источника пакета, в котором мы устанавливаем пользовательские модули в путь поиска. От него зависят все проекты snapcpp. Или для другого примера, проверьте advgetopt, который позволяет синтаксический анализ командной строки на C++ (который имеет зависимость от controlled_vars, также в том же проекте). –

+0

Похоже, что у вас должна быть каждая зависимость в отдельном проекте? – tripleee

ответ

1

Решение, которое я обнаружил самостоятельно, состояло в том, чтобы использовать команду рецепта «nest-part», которая позволяет вам взять одну папку из ветки bzr и сопоставить ее с вашим проектом. Однако он не может быть привязан к корню вашей ветки.

Что я сделал, это создать ветку с только упаковочной информацией в ней и файл CMakeLists.txt, содержащий «add_subdirectory (src)». Затем я перехожу из основной ветви кода (lp: snapcpp), но только из рассматриваемого проекта. Например, вот рецепт для проекта «controlled_vars» в snapcpp:

# bzr-builder format 0.3 deb-version {debupstream}+{revno} 
lp:~snapcpp/snapcpp/controlled_vars 
nest-part src lp:snapcpp controlled_vars src 

Там же должны быть ветвь с упаковки информации с каждого суб-проекта, но это один раз установить проблему.

Смежные вопросы