Mercurial, зависимости, структура хранилища - PullRequest
2 голосов
/ 21 марта 2011

Я работаю над кроссплатформенным проектом и использую CMake для настройки проекта с разными системами сборки.Недостатком этого подхода является необходимость зависимостей и подпроектов, построенных на каждой платформе.Я изменил классическую структуру trunk-branch-tag (я тогда был на subversion) так:

trunk/
  data/
  test/
  sources/
  ...
branches/
  branch-A/
  branch-B/
  ...
tags/
  tag-1.0/
  tag-1.1/
  ...
workspace/
  msvs_2008/
    3rdParty/ - (contains precompiled libs, e.g boost)
    external-lib-1/ - (external library-1 source)
    external-lib-2/ - (external library-2 source)
    project/ - (external to the trunk)
    CMakeLists.txt - (configures this stuff together)
  generic/ - (for linux, 3rdParty libraries installed using package manager)
    external-lib-1/
    external-lib-2/
    project/
    CMakeLists.txt
  msvs_2010/ - (experimental)
    3rdParty/
    external-lib-1/
    external-lib-2/
    project/
    CMakeLists.txt

Так что разработчик может просто извлечь необходимую ветку разработки и собрать ее из коробки.Он также может извлекать ствол и, если у него есть готовые библиотеки и необходимые зависимости, CMake найдет его.

Кто-нибудь боролся с этой проблемой?Как лучше решить проблему с mercurial (я не уверен, что использование веток для другой системы сборки с магистральным под-репозиторием - это хорошее решение с mercurial, и не уверен, что включение библиотек предварительной сборки для каждой собранной системы является правильным)?

1 Ответ

1 голос
/ 21 марта 2011

Посмотрите на Mercurial Subrepos , они являются решением для такого рода настройки.

...