<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934308</guid>
        <pubDate>Thu, 08 Jan 2026 13:53:29 +0000</pubDate>
        <title>Bazel - относительно новая система сборки</title>
        <link>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934308</link>
        <description><![CDATA[Majestio: Супер-обзор&#33;&#33;&#33; :good:]]></description>
        <author>Majestio</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934307</guid>
        <pubDate>Thu, 08 Jan 2026 10:35:00 +0000</pubDate>
        <title>Bazel - относительно новая система сборки</title>
        <link>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934307</link>
        <description><![CDATA[negram: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=471239&view=findpost&p=3934291'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>kolobok0 &#064; <time class="tag-quote__quoted-time" datetime="2026-01-06T10:41:15+00:00">06.01.26, 10:41</time></span><div class='quote '> Правда ещё лучше - привести сравнительный анализ. Это ещё больше даёт ответов и понимания о чём речь, плюс раскрывает немного сам опыт пользователя и глубину норы :D . </div></div><br>
У меня маленький опыт с базелем - я, в основном, работал с ним в Envoy. И вряд-ли тут у кого-то есть большой, кажется, но я был бы рад об кого-нибудь проверить свои впечатления.<br>
<br>
Ну давайте попробуем. Пожалуй, начну немного с истории.<br>
<br>
Сначала был компилятор (ну, и линковщик, хотя он вероятно чуть позже появился). Потом решили, что есть некий граф, по которому можно собирать приложение - сделали Makefile: стало гораздо лучшее. Потом придумали, что toolchain надо как-то конфигурировать - появился autotools, потом cmake (и ещё дюжина малоизвестных аналогов), которые позволяли генерить скрипты для make/ninja. Были кстати, ещё cons/scons, mozbuild и подобные - обходились даже без make, но кажется они не прижились. На этом этапе встаёт вопрос пере-использования компонент.<br>
<br>
Прежний ответ unix-like: ставим в ОС dev-пакеты, их подхватывают cmake и прочие, и радуемся. Это поднимает 3 вопроса:<br>
- а если нет прав что-то ставить?<br>
- а что, если таких пакетов вообще нет?<br>
- ну теперь надо поддерживать рандомную версию рандомной либы - это боль, нафига оно, если проект не открытый, например?<br>
<br>
Добавляем ещё компонент: менеджер пакетов (conan, hunter).<br>
<br>
(вообще, все эти проблемы можно было закрыть с помощью shell-скрипта, но это само собой порождает кучу проблем :) ).<br>
<br>
А&#33; Ещё есть вопрос - а если cmake в системе не совместим с нашим сценарием сборки?<br>
<br>
<br>
Вот это вкратце, что такое Bazel - это воплощение всех этих шагов/вопросов в одном месте.<br>
Стоит так же добавить, что это проект Гугла, в котором есть свои нюансы, навроде того, что там есть армия из десятков тысяч инженеров. Для них важно, чтоб работало у всех и это было сложно сломать, тк если есть возможность что-то сделать не так, на таком масштабе сделают. Мне кажется, ещё полезно (как минимум, интересно) почитать философию, которая лежит в основе: <a class='tag-url' href='https://abseil.io/resources/swe-book/html/ch18.html' target='_blank'>https://abseil.io/resources/swe-book/html/ch18.html</a><br>
<br>
<br>
С похожими идеями есть ещё Buck (<a class='tag-url' href='https://buck2.build/' target='_blank'>https://buck2.build/</a>) от фейсбука, которые утверждают, что пофиксили какие-то проблемы Bazel. К тому же Buck написан на Rust, вместо Java.<br>
<br>
<strong class='tag-b'>1. Вопрос версии сборщика</strong><br>
<br>
В целом, в bazel принято ставить в систему bazelisk (<a class='tag-url' href='https://github.com/bazelbuild/bazelisk' target='_blank'>https://github.com/bazelbuild/bazelisk</a>). И тогда, в корне репы кладётся файлик (<a class='tag-url' href='https://github.com/envoyproxy/envoy/blob/main/.bazelversion' target='_blank'>https://github.com/envoyproxy/envoy/blob/main/.bazelversion</a>), и так мы убеждаемся, что версия bazel - та, что нам надо.<br>
<br>
В CMake можно прописать minimal required version, с обещанием не ломать совместимость, но тут отличие - bazelisk скачает правильную версию и сам её запустит.<br>
<br>
<br>
<strong class='tag-b'>2. Выбор пакетов</strong><br>
<br>
Тут есть 2 варианта: во-первых, если репозиторий модулей (<a class='tag-url' href='https://registry.bazel.build/all-modules' target='_blank'>https://registry.bazel.build/all-modules</a>). Кажется, пакетов тут сильно меньше, чем в conan, но и репозиторий более молодой (кажется год-два назад появился). Если чего-то нет, см “во-вторых”.<br>
<br>
Во-вторых, можно подключить foreign lib (<a class='tag-url' href='https://registry.bazel.build/modules/rules_foreign_cc' target='_blank'>https://registry.bazel.build/modules/rules_foreign_cc</a>) - то есть описать правила сборки/линковки с либой. В этом месте, отличие от cmake-ка опять же, что либа будет скачена сама.<br>
<br>
Тут я встретил проблему с гибкостью: если либа очень кастромная, может быть больно (см “герметичность”). Дело в том, что в юниксах принято инсталлить библиотечки в 3 места:<br>
- заголовки<br>
- данные линквки (иногда отсутствует)<br>
- либа (.a/.so)<br>
<br>
И foreign_cc поощряют, если библиотека следует этому паттерну, но я, например, пытался слинковаться с YTSaurus SDK, который был открыт по принципу “кидаем в opensource что есть, пусть сами фиксят), и там ничего такого нет. Настраивать include/link path было сложно, потому-что на одну эту SDK путей нереально много и из-за герметичности, не так-то просто пройтись по дереву ФС и составить список папочек, где лежат .a-файлы. Задача решается, но пришлось попотеть. C Cmake-ом вышло проще, тк SDK нативно поддерживает cmake.<br>
<br>
Пример ссылок на удалённые репозитории: <a class='tag-url' href='https://github.com/envoyproxy/envoy/blob/main/bazel/repository_locations.bzl' target='_blank'>https://github.com/envoyproxy/envoy/blob/ma...y_locations.bzl</a><br>
<br>
<br>
Тут же можно упомянуть, про переиспользование частей репозитория, но лучше почитать доку: <a class='tag-url' href='https://bazel.build/concepts/build-ref' target='_blank'>https://bazel.build/concepts/build-ref</a>. Тут кажется, сравнивать не с чем - я такой фичи не видел. На этом построена сборка XDS-сервисов, например.<br>
<br>
<br>
<strong class='tag-b'>3. Платформы/конфигурации:</strong><br>
<a class='tag-url' href='https://bazel.build/extending/platforms' target='_blank'>https://bazel.build/extending/platforms</a><br>
<a class='tag-url' href='https://bazel.build/extending/config' target='_blank'>https://bazel.build/extending/config</a><br>
<a class='tag-url' href='https://bazel.build/extending/toolchains' target='_blank'>https://bazel.build/extending/toolchains</a><br>
<br>
Вот эти штуки позволяют включать/выключать части проекта под определёнными платформами. Это похоже, на toolchain/defines в CMake, но на мой взгляд чутка более удобно.<br>
С точки зрения пользователя, можно посмотреть вот тут как настраивается сборка в зависимости от выбранной/задетекченной конфигурации:<br>
<a class='tag-url' href='https://github.com/envoyproxy/envoy/blob/main/.bazelrc' target='_blank'>https://github.com/envoyproxy/envoy/blob/main/.bazelrc</a><br>
<br>
<br>
<strong class='tag-b'>4. Герметичность</strong><br>
<br>
Вот это, кажется,  одно из самых opinionated мест bazel. <br>
<br>
Герметичность означает отсутствие внешних зависимостей (не описанных в правилах сборки).<br>
<br>
Все скрипты сборки не видят и не могут зависеть от того, что установленно в системе. Всё, что используется должно быть явным образом объявлено (например, с помощью того-же toolchain). Это не заметно, если используются нативные bazel-инструкции, но если например, хочется использовать protoc из системы - придётся заморочиться с написанием своего toochain. Из-за этого в скриптах сборки, например, нет средств работы с ФС - просто нельзя что-то взять и прочитать из рандомного места ФС, запустить скрипт из домашней папки и тп.<br>
<br>
<br>
Это не заметно на совсем маленьких проектах - где нет необходимости запустить какой-нибудь кастомный скрипт/генератор.<br>
 <br>
Это обескураживает и обезоруживает, если это надо - потому-что это легко делается в том же cmake, да и где угодно. Но. <br>
<br>
Это оказывается чрезвычайно мощным инструментом, если хочется делать воспроизводимые сборки и убедиться, что сборка работает на масштабах тысяч разработчиков. Иначе, нет никакой гарантии, что Вася поставит что-то не то, пропустит важный шаг в инструкции “как собирать” и тп.<br>
Это позволяет легко сделать удалённый запуск сборки - нет зависимостей от конкретной системы, значит запускать можно на любой&#33; В теории, даже не родной - ведь у нас есть концепт платформы, который позволит даже делать кросс-компиляцию (но это место я не проверял)<br>
<br>
Bazel сам контролирует инструменты, что использует. Описать свой тулчеин, поначалу сложно - синтаксис (или семантика?) непривычный.<br>
<br>
<br>
<strong class='tag-b'>5. Стабильность</strong><br>
<br>
Вот это жопа какая-то. Все мануалы, что найдутся в интернете, весьма вероятно, устарели. Документация бывает устаревшая. Очень часто, в новой версии придумывают новый - более лучший способ делать что-то.<br>
<br>
Этот момент смягчается тем, что используем bazelisk и фиксируем версию bazel: у всех всегда всё работает. Больно тем, кто сопровождает систему сборки.<br>
<br>
<br>
<strong class='tag-b'>6. Starlark</strong><br>
<br>
Вся сборка описывается на языке Starlark. Это действительно подмножество Python - разработчики взяли синтаксис питона и заимплементили его, с оговорками.<br>
<br>
А теперь про оговорки. Сценарий сборки обязан быть детерминистичным - всегда выполняться одинаково. Есть ещё идея про гермитичность. Отсюда, вытекают некоторые нюансы. Например, нельзя (или очень сложно) написать что-то похожее на бесконечный цикл, нету исключений, нету стандартной библиотеки, нету классов. В общем, если вы знаете питон (а кто его не знает?), это не поможет примерно никак - всё надо будет учить сначала. И многих вещей заимплеменить практически невозможно (либо очень сложно).<br>
<br>
<br>
<strong class='tag-b'>7. Go</strong><br>
<br>
Казалось бы. Go  сделан в гугле, Bazel сделан гуглом - они должны идеально работать друг с другом. И, насколько я могу судить, этим пользуются, но я не смог.<br>
<br>
С одной стороны, для меня была killer-фича: в базеле можно сделать авторизацию, при скачивании go-модуля (модули в Go - это git-репозитории, причём, по-дефолту используется git+https, и сделать авторизацию возможно, но гемморойно; а в базеле легко). Это важно, когда работаешь с приватными репозиториями/модулями.<br>
<br>
Но оказалось (либо я что-то не понял), что в bazel, придётся прописать не только используемые пакеты, но ещё и описать все транзитивные зависимости. Это для меня как-то было черезчур, показалось, что проще сделать правило, что запускает go build и берёт артифакт, чем нативно встраивать его в bazel. <br>
<br>
Всё-таки подозреваю, что я что-то не так понял…<br>
<br>
<br>
<strong class='tag-b'>8. Отдельный сервер-процесс.</strong><br>
<br>
Bazel, при первом запуске, запускает фоновый сервер-процесс, который держит граф сборки, всякие кеши, и ещё что-то, чтоб ускорить процесс. Подобным образом работает Gradle, например. Но на мой взгляд, это редко даёт большое преимущество, если сравнить с Ninja, например. <br>
<br>
<br>
<strong class='tag-b'>9. Дебаг</strong><br>
<br>
Bazel создаёт много разных артифактов и логов во время работы, чтоб было проще разобраться что пошло не так. Но разобраться в этом всём тоже, поначалу, не просто. Я с подобной проблемой встречался в Gradle - тоже много отладочной информации, в которой сложно найти первопричину. <br>
<br>
Но с другой стороны, в cmake приходится дебажить, а тут надо знать куда/как смотреть]]></description>
        <author>negram</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934303</guid>
        <pubDate>Wed, 07 Jan 2026 19:42:34 +0000</pubDate>
        <title>Bazel - относительно новая система сборки</title>
        <link>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934303</link>
        <description><![CDATA[kolobok0: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=471239&view=findpost&p=3934293'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2026-01-06T12:36:33+00:00">06.01.26, 12:36</time></span><div class='quote '>Как и сказал negram, bazel не для маленьких проектов. Но довольно интересен.</div></div><br>
В Ваших высказываниях не было сравнительного анализа с подобными системами производства софта. Вы, похоже не сталкивались с долгоиграющими проектами (нет очевидных обращений внимания на минусы которые несёт собой любой большой комбайн). Есть тупо эмоциональные возгласы по поводу того, что Вы раньше не знали и в других системах сборок так-же.<br>
<br>
Как я сказал выше - информации в топике очень мало, и хотелось бы услышать сравнительный анализ с указанием положительного решений тех задач которые возникают в процессах производства софта.<br>
<br>
<br>
С уважением<br>
(круглый)]]></description>
        <author>kolobok0</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934294</guid>
        <pubDate>Tue, 06 Jan 2026 15:06:30 +0000</pubDate>
        <title>Bazel - относительно новая система сборки</title>
        <link>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934294</link>
        <description><![CDATA[D_KEY: <strong class='tag-b'>negram</strong>, :good:]]></description>
        <author>D_KEY</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934293</guid>
        <pubDate>Tue, 06 Jan 2026 12:36:33 +0000</pubDate>
        <title>Bazel - относительно новая система сборки</title>
        <link>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934293</link>
        <description><![CDATA[sharky72: Как и сказал negram, bazel не для маленьких проектов. Но довольно интересен.]]></description>
        <author>sharky72</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934291</guid>
        <pubDate>Tue, 06 Jan 2026 10:41:15 +0000</pubDate>
        <title>Bazel - относительно новая система сборки</title>
        <link>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934291</link>
        <description><![CDATA[kolobok0: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=471239&view=findpost&p=3934288'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>negram &#064; <time class="tag-quote__quoted-time" datetime="2026-01-06T09:44:43+00:00">06.01.26, 09:44</time></span><div class='quote '>Bazel, на мой взгляд, имеет чудовищный порог вхождения...отдача получается просто огромной. Это имеет смысл для очень сложных проектов,...<br>
<br>
- сборка всегда в сендбоксе, при этом есть несколько вариантов сендбоксов - от подмены ENV до запуска в докере<br>
- возможность делать распределённую сборку, причём, можно как на ферме серверов, так и peer-to-peer<br>
- можно организовать репозиторий в виде модулей (это даже в его best practices), и переиспользовать модули, просто сославшись на git repo+path<br>
- конкретно с плюсами, достаточно просто подключить любой autotools (едрён-батон, такие до сих пор встречаются&#33;)/cmake-либу, если нет подготовленного модуля<br>
- &quot;пресеты&quot; для разных конфигураций - можно задать набор правил (линковщик/сборщик/сендбокс/флаги/toolchain) и использовать его либо условно (где собираем - linux/mac), либо явно <br>
....позиционируется как сборщик-полиглот,...огорчает их подход к апдейтам - очень часто ломается обратная совместимость, хотя это постоянно обещают пофиксить))</div></div><br>
Первая попытка написать анализ, а не эмоции. Любая фигня имеет плюсы и минусы. Описание лучше начинать с минусов - тем самым подчёркивая, что Вы не находитесь в эйфории эмоций а вещаете некий суррогат опыта-наблюдения.<br>
<br>
спасибо<br>
ЗЫ ЗЫ<br>
Правда ещё лучше - привести сравнительный анализ. Это ещё больше даёт ответов и понимания о чём речь, плюс раскрывает немного сам опыт пользователя и глубину норы  :D .]]></description>
        <author>kolobok0</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934289</guid>
        <pubDate>Tue, 06 Jan 2026 09:57:28 +0000</pubDate>
        <title>Bazel - относительно новая система сборки</title>
        <link>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934289</link>
        <description><![CDATA[Majestio: <strong class='tag-b'>negram</strong>, пасип за инфу&#33; =)]]></description>
        <author>Majestio</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934288</guid>
        <pubDate>Tue, 06 Jan 2026 09:44:43 +0000</pubDate>
        <title>Bazel - относительно новая система сборки</title>
        <link>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3934288</link>
        <description><![CDATA[negram: Bazel, на мой взгляд, имеет чудовищный порог вхождения. Что-то сложнее сборка-линковка становится кошмаром. Зато, если в нём разобраться, отдача получается просто огромной. Это имеет смысл для очень сложных проектов, навроде Google Chrome и Envoy - где он как-раз и используется.<br>Например, такие штуки, которые мне нравятся:<br><br>- сборка всегда в сендбоксе, при этом есть несколько вариантов сендбоксов - от подмены ENV до запуска в докере<br>- возможность делать распределённую сборку, причём, можно как на ферме серверов, так и peer-to-peer<br>- можно организовать репозиторий в виде модулей (это даже в его best practices), и переиспользовать модули, просто сославшись на git repo+path<br>- конкретно с плюсами, достаточно просто подключить любой autotools (едрён-батон, такие до сих пор встречаются&#33;)/cmake-либу, если нет подготовленного модуля<br>- &quot;пресеты&quot; для разных конфигураций - можно задать набор правил (линковщик/сборщик/сендбокс/флаги/toolchain) и использовать его либо условно (где собираем - linux/mac), либо явно <br><br>Кроме того, Bazel - это не только про C++, он позиционируется как сборщик-полиглот, и может переварить любой язык. Например, на предыдущем месте, он собирал и Typescript и Python. Короче, безумно мощная штука, и безумно сложная поначалу. Ещё огорчает их подход к апдейтам - очень часто ломается обратная совместимость, хотя это постоянно обещают пофиксить))]]></description>
        <author>negram</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3933879</guid>
        <pubDate>Tue, 23 Dec 2025 21:33:20 +0000</pubDate>
        <title>Bazel - относительно новая система сборки</title>
        <link>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3933879</link>
        <description><![CDATA[sharky72: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=471239&view=findpost&p=3933860'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-12-23T11:18:44+00:00">23.12.25, 11:18</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=471239&view=findpost&p=3933859'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-12-23T11:11:22+00:00">23.12.25, 11:11</time></span><div class='quote '>А зависимости все равно conan</div></div><br>
Да, я чуть позже прочёл про это. Просто у Conan репозитарий куда больше, грех не пользоваться. <br>
Но, на сколько я понял, и Bazel, и Conan - вполне себе неплохо чувствуют, в &quot;кооперации&quot;?</div></div><br>
Да. Именно в такой связке и работаем. У базеля очень интересный подход к сборке. Местами мне даже нравится. Но иногда задолбаешься указывать правильные зависимости, откуда брать либы, откуда хидерры, чего можно дать тесту, чего низзя. Для кого твоя сборка видна, а для кого нет. В каждую папочку BUILD файл, где все прописваешь. При правильном построении иерархии сборки большого проекта - очень удобно.<br>
Синтаксис своего языка Starlark близок к питону. Так что питоноводам легко въехать.<br>
Я его первый раз сосбно на нынешнем проекте и увидел. До того в основном conan+cmake. И да. Все в докере.]]></description>
        <author>sharky72</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3933878</guid>
        <pubDate>Tue, 23 Dec 2025 19:23:20 +0000</pubDate>
        <title>Bazel - относительно новая система сборки</title>
        <link>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3933878</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=471239&view=findpost&p=3933876'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2025-12-23T18:48:16+00:00">23.12.25, 18:48</time></span><div class='quote '>CMake + Conan фактически стандарт сейчас. Кроме легаси или простых проектов.<br>
Система сборки, которая могла бы это заменить, должна как-то иметь возможность лёгкой миграции, а так же давать какие-то существенные преимущества...</div></div><br>
Ну н счёт преимуществ - я там мало-мало перечислил, просто почитать внимательнее надо.<br>
А вот про кооперацию Bazel и Conan я писал ранее.]]></description>
        <author>Majestio</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3933876</guid>
        <pubDate>Tue, 23 Dec 2025 18:48:16 +0000</pubDate>
        <title>Bazel - относительно новая система сборки</title>
        <link>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3933876</link>
        <description><![CDATA[D_KEY: CMake + Conan фактически стандарт сейчас. Кроме легаси или простых проектов. <br>Система сборки, которая могла бы это заменить, должна как-то иметь возможность лёгкой миграции, а так же давать какие-то существенные преимущества...]]></description>
        <author>D_KEY</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3933860</guid>
        <pubDate>Tue, 23 Dec 2025 11:18:44 +0000</pubDate>
        <title>Bazel - относительно новая система сборки</title>
        <link>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3933860</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=471239&view=findpost&p=3933859'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-12-23T11:11:22+00:00">23.12.25, 11:11</time></span><div class='quote '>А зависимости все равно conan</div></div><br>
Да, я чуть позже прочёл про это. Просто у Conan репозитарий куда больше, грех не пользоваться. <br>
Но, на сколько я понял, и Bazel, и Conan - вполне себе неплохо чувствуют, в &quot;кооперации&quot;?]]></description>
        <author>Majestio</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3933859</guid>
        <pubDate>Tue, 23 Dec 2025 11:11:22 +0000</pubDate>
        <title>Bazel - относительно новая система сборки</title>
        <link>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3933859</link>
        <description><![CDATA[sharky72: У нас на проекте используется для сборки. Но я пока сам в нем еще разбираюсь. А зависимости все равно conan :)]]></description>
        <author>sharky72</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3933790</guid>
        <pubDate>Tue, 23 Dec 2025 05:30:44 +0000</pubDate>
        <title>Bazel - относительно новая система сборки</title>
        <link>https://forum.sources.ru/index.php?showtopic=471239&amp;view=findpost&amp;p=3933790</link>
        <description><![CDATA[Majestio: Всем привет&#33;<br>
<br>
Совершенно случайно столкнулся с инфой по этой системе, и меня она очень впечатлила. Решил с вами поделиться этой инфой. Может кто уже пользует во всю и поделится впечатлениями и лайфхаками...<br>
<br>
<img class='tag-img' src='https://s1.hostingkartinok.com/uploads/images/2025/12/4bdff46e5f5145b40e109f9af75f93b6.jpg' alt='user posted image'><br>
<br>
<strong class='tag-b'>Разработчик: <span class="tag-color tag-color-named" data-value="blue" style="color: blue">Google</span></strong><br>
<strong class='tag-b'>Первый выпуск: <span class="tag-color tag-color-named" data-value="blue" style="color: blue">2015 год</span></strong><br>
<strong class='tag-b'>Сайт: <a class='tag-url' href='https://bazel.build' target='_blank'>https://bazel.build</a></strong><br>
<br>
Почему эта штука меня очень заинтересовала:<br>
<br>
<ul class="tag-list"><li>Это полноценная система сборки, на не как, например <a class='tag-url' href='https://cmake.org' target='_blank'>CMake</a> или <a class='tag-url' href='https://mesonbuild.com' target='_blank'>Meson</a>, которые являются генераторами build-систем</li><li>Имеет гораздо более лаконичный язык своих конфигурационных файлов нежели <a class='tag-url' href='https://cmake.org' target='_blank'>CMake</a></li><li>Имеет свою собственную мощную систему отслеживания зависимостей (с возможностью скачки из репозитариев при необходимости), чуть слабее конечно чем <a class='tag-url' href='https://conan.io' target='_blank'>Conan</a></li><li>Своя очень мощная подсистема кэширования для обеспечения максимизации скорости инкрементальных сборок</li><li>Поддерживает мультиязычные проекты (имеется ввиду, когда в проекте отдельные модули собираются на разных языках программирования)</li><li>Поддерживает распределенную сборку на базе <a class='tag-url' href='https://ru.wikipedia.org/wiki/GRPC' target='_blank'>gRPC</a>, наибольший прирост производительности - при использовании <a class='tag-url' href='https://www.docker.com' target='_blank'>Docker</a>-образов</li><li>Кросс-платформанность - одна конфигурация проекта на все поддерживаемые платформы</li></ul><br>
Это только малая часть, которую я выяснил при первом знакомстве :) <br>
В общем, приглашаю к обсуждению всех, кому такое интересно. И особенно тех, кто этим уверено пользуется&#33;]]></description>
        <author>Majestio</author>
        <category>C/C++: Прочее</category>
      </item>
	
      </channel>
      </rss>
	