TGViewer
commit -m "better" commit -m "better" @itpgchannel · 3.78K subscribers
Post #4282 2.5K
Примерно на 20-ом просмотре https://t.me/itpgchannel/4280 я решил, что негоже пользоваться гойскими системами сборки, и для #shell ImGui Desktop (анонс, если кто пропустил - https://t.me/itpgchannel/4275) мне нужна хорошая, годная, система сборки.

Надо сказать, что мне очень нравится пилить системы сборки, я за всю жизнь запилил их штук 10, часть inhouse - https://github.com/yandex/yatool, часть лежит на gihub. Тот же #IX - вполне себе система сборки.

Многие пользуются заслуженной популярностью!

В общем, если я за год не запилил систему сборки, то год прошел зря. За этот год я уже запилил две - https://github.com/pg83/ay, и вот теперь https://github.com/pg83/build.

По сути, это комбинация yatool выше (opensource версия нашей inhouse системы сборки ya), и meson.

От meson в ней способ описания сборочных файлов, только сильно проще:

https://github.com/pg83/gofra/blob/master/build.py
https://github.com/pg83/zutty/blob/master/build.py

В отличие от meson, это настоящий python, а не интерпретируемое подмножество, поэтому удобно делать всякие штуки, связанные с внешним окружением - всякого рода glob() по файлам/директориям, полуавтоматическое заведение новых таргетов при разумном устройстве fs, возможность скачать исходник из интернета, и так далее. Вот пример сложного сборочного файла, где это используется в хвост и в гриву - https://github.com/pg83/imway/blob/main/build.py.

К сожалению, это необходимо для сборки небольших oss проектов, поэтому это должно быть удобным.

От ya там, я бы это назвал, "общая вменяемость":

* мгновенное исполнение - раннер прямо встроен в тулзу, тулза строит граф, и тут же его выполняет
* пересборка не по timestamp, а по хешу от файлов и команд
* исходники парсятся, все их включения известны заранее, поэтому пересборка очень fine grained
* так как мы знаем все include для всех файлов, в том числе, от кодогенеренных таргетов, то совершенно не нужно указывать подробные зависимости, они будут выведены автоматически
* cas как хранилище артефактов
* норм кросс-компиляция

На КДПВ - результат сборки небольшого проекта. Половина моих читателей видела похожий output 100500 раз, я не люблю перепридумывать хорошие вещи.

Вся сборка - это один небольшой файл build, который копируется прямо в проект, как waf, поэтому сборка проекта самодостаточна.

Перевел на эту сборку весь свой C++ код, в том числе, #zutty, #shell, и доволен, как слон.

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

#build
  • 💊 32
  • ❤ 14
  • 🔥 9
  • 🤡 6
  • 👍 2
  • 🤔 1
More from @itpgchannel
  1. Sep 28, 2026https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6868618 https://t.me/crimsondigest/213…
  2. Sep 28, 2026Будни #bootstrap, #ix repology.org лежит уже почти месяц, кажется, у владельца проблемы с…
  3. Sep 28, 2026photo post
  4. Sep 27, 2026Кстати, про "1000 проектов". Масштаб тестов (15k unit + сотни реальных крейтов) уже давно…
  5. Sep 27, 2026Давно не писал про #trustme. В целом, прогресс очень хороший, токенов только не хватает, ч…
  6. Sep 26, 2026#LLM - лучший боров чекер, и rust, конечно, больше не нужен, не могу не согласиться.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →