Re: conan, npm, vcpkg?
От: okman Беларусь https://searchinform.ru/
Дата: 17.01.26 19:38
Оценка: 12 (1)
Здравствуйте, Marty, Вы писали:

M>Кто что использует? Где какие плюсы, где какие минусы?


Используем Conan. В целом, вполне устраивает. У нас "зоопарк" библиотек, много кода и проектов.

Типичный workflow выглядит так: склонировал ветку git, запустил один раз в ней специальный скрипт, который стянул,
если требуется, недостающие библиотеки нужных версий в локальный кэш. И все, можешь работать с веткой.
Мы развернули свой сервер артефактов Conan, чтобы не зависеть от "внешнего мира". Первоначальная настройка
включает лишь установку Python и выполнение пары команд из консоли. Когда выходит новая мажорная версия
компилятора или среды разработки, или когда решаем переключить версию стандарта C++, или когда надо сменить
версию какой-то библиотеки — ответственный человек занимается этим и загружает новые артефакты на сервер.
После этого остается лишь внести некоторые изменения в настройки проектов и все подтянется автоматически.
Каких-то проблем за несколько лет использования не припомню. Нравится, что есть достаточно много рецептов
сборки для самых разных библиотек.

Это были плюсы. Теперь о минусах. Conan — это немного "магия", в которой кто-то должен хорошо разбираться.
Если ответственный человек ушел в отпуск, заболел или сильно занят и вдруг возникла необходимость что-то
обновить в артефактах, то сам ты с ходу этого, скорее всего, не сделаешь. Нужно читать мануалы,
экспериментировать, набивать шишки и т.п.

Ну и в целом, безотносительно Conan и пакетных менеджеров, зависимости от сторонних библиотек, особенно от тех,
которые требуют сборки и всяких там Perl/Cmake/NuGet/Ninja/etc — это не всегда хорошо. Иногда такие
зависимости незаметно становятся сквозными и очень сильными, как "вирус" проникая во все проекты...
Ты приходишь однажды с желанием точечно поменять настройки какого-то проекта или для эксперимента собрать его
под другую версию стандарта C++, или под новую платформу, или хочешь прогнать юнит-тесты с каким-нибудь
ASAN-ом — но не можешь. Тебе мешает пакетный менеджер, его контроль ABI или еще чего-нибудь такое.
Пытаешься убрать внешние зависимости, а они в одном месте, в другом, в третьем. У нас, например, артефакты
нельзя собирать с опцией Link-Time Code Generation компилятора, потому что после первого же обновления
компилятора совместимость на двоичном уровне уже не гарантируется и могут быть проблемы.
А пересобирать целиком весь "зоопарк" библиотек каждые несколько дней никто не будет.

В общем, к таким вещам надо аккуратно подходить, особенно на больших кодовых базах. Сейчас, начиная какой-нибудь
новый проект с нуля, я бы до последнего сопротивлялся введению пакетного менеджера. Conan или что-то другое —
не важно, хрен редьки не слаще )) Если его и включать — то очень избирательно, для тех компонентов, где он
позарез нужен, но не больше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.