У меня есть большой репозиторий с большим количеством отдельных модулей (исполняемых и т. Д. Файлов), некоторые из которых зависят от другого (и зависят от сторонних библиотек, которых нет в репо).
Я хочу иметь возможность вытащить только один модуль в этом хранилище и быть в состоянии построить его независимо.
Кстати, я использую scons в качестве инструмента для сборки в среде Linux и Windows.
Я видел на этом сайте (и больше), что есть два подхода к этой проблеме:
создайте в каждом репозитории модулей каталог «зависимость» или любое подобное имя и задайте все репозитории, от которых зависит этот модуль, в качестве под-репозиториев в этом каталоге.
Проблемы:
создать «двоичный репозиторий» или «построить репозиторий артефактов» и управлять с ним зависимостями.
Это выглядит как лучшее решение для меня, но я не понимаю, как это сделать практически.
Я видел nuget для разработчиков c # windows (а также немного c ++, но только в windows) и ivy / maven для разработчиков java, но не могу найти какой-либо инструмент, который справится с этим для c ++.
Мой вопрос — как создать управление зависимостями с кодом C ++?
Зависимости в C ++ управляются с помощью заголовочных файлов и предварительных объявлений.
Как правило, вы должны предпочесть как можно больше предварительных объявлений и включать заголовочные файлы, когда нет возможности обойти это. Обычно это дает вам преимущество в том, что до тех пор, пока вы не измените интерфейс класса, перекомпиляция должна касаться только одного объектного файла.
Я подозреваю, что вы также хотите что-то более сложное, связанное с настройкой вашей сборки. Это имеет очень мало общего с C ++. Если вы хотите получить лучший ответ для этого, будьте более точны в отношении настроек сборки.
плагин maven nar (Native Archive) могу помочь вам с этим Это плагин для Maven, который позволяет создавать собственные архивы на платформе. Затем вы можете использовать стандартную функцию зависимостей maven для зависимостей c / c ++.