Как управлять зависимостями в переполнении стека

У меня есть большой репозиторий с большим количеством отдельных модулей (исполняемых и т. Д. Файлов), некоторые из которых зависят от другого (и зависят от сторонних библиотек, которых нет в репо).

Я хочу иметь возможность вытащить только один модуль в этом хранилище и быть в состоянии построить его независимо.

Кстати, я использую scons в качестве инструмента для сборки в среде Linux и Windows.

Я видел на этом сайте (и больше), что есть два подхода к этой проблеме:

  1. создайте в каждом репозитории модулей каталог «зависимость» или любое подобное имя и задайте все репозитории, от которых зависит этот модуль, в качестве под-репозиториев в этом каталоге.

    Проблемы:

    1. это не решает проблему сторонних, которые не обрабатываются в моем SCM.
    2. это делает процедуру сборки намного медленнее
    3. это ужасно, много магазинов в моем базовом проекте, реж.
  2. создать «двоичный репозиторий» или «построить репозиторий артефактов» и управлять с ним зависимостями.

Это выглядит как лучшее решение для меня, но я не понимаю, как это сделать практически.

Я видел nuget для разработчиков c # windows (а также немного c ++, но только в windows) и ivy / maven для разработчиков java, но не могу найти какой-либо инструмент, который справится с этим для c ++.

Мой вопрос — как создать управление зависимостями с кодом C ++?

3

Решение

Зависимости в C ++ управляются с помощью заголовочных файлов и предварительных объявлений.
Как правило, вы должны предпочесть как можно больше предварительных объявлений и включать заголовочные файлы, когда нет возможности обойти это. Обычно это дает вам преимущество в том, что до тех пор, пока вы не измените интерфейс класса, перекомпиляция должна касаться только одного объектного файла.

Я подозреваю, что вы также хотите что-то более сложное, связанное с настройкой вашей сборки. Это имеет очень мало общего с C ++. Если вы хотите получить лучший ответ для этого, будьте более точны в отношении настроек сборки.

0

Другие решения

плагин maven nar (Native Archive) могу помочь вам с этим Это плагин для Maven, который позволяет создавать собственные архивы на платформе. Затем вы можете использовать стандартную функцию зависимостей maven для зависимостей c / c ++.

0

По вопросам рекламы [email protected]