LINUX.ORG.RU

ZenMake 0.10.0

 , ,


0

3

ZenMake — ещё одна система сборки для C/C++ и ряда других языков программирования с декларативными конфигурационными файлами.

ZenMake написан на python с использованием Waf в качестве фреймворка. Основная цель проекта — быть простым в использовании насколько это возможно, но оставаться достаточно гибким.

Зачем еще одна система сборки? Подробности (на английском): https://zenmake.readthedocs.io/en/latest/why.html

Основной репозиторий: https://gitlab.com/pustotnik/zenmake

Документация: https://zenmake.readthedocs.io/

Примеры использования: https://gitlab.com/pustotnik/zenmake/tree/master/demos

Способы использования:

  1. Установить в систему через pip install zenmake и использовать на манер CMake, Meson и др., вызывая zenmake в корне проекта.
  2. Скачать zipapp-форму zenmake.pyz отсюда или сгенерировать самостоятельно через команду zipapp и использовать как встроенную систему сборки.

>>> Подробности



Проверено: alpha ()
Последнее исправление: cetjs2 (всего исправлений: 4)
Ответ на: комментарий от Vark

По конфигам: зачем декларативный питон? Малость мусорно выходит, лишние запятые и т.п. Лучше что-то более удобное для написания и восприятия (тут уже сказали об этом)

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

anonymous
()
Ответ на: комментарий от fsb4000

А теперь добавьте внешние зависимости, с проверкой версии и прочими ништяками. И без pkg-config.

RazrFalcon
()

А как ZenMake справляется с кросс-компиляцией? Например, мне нужно на x86 собрать компилятор, работающий на ARM и компилирующий для MIPS

Harald
()
Ответ на: комментарий от Vark

Я увидел 3rdparty на уровне: пропиши путь к бусту или туда где оно лежит. Даже msbuild с nuget пакетами это делает красиво для пользователя. (Внутри ужас, да).

invy
()
Ответ на: комментарий от RazrFalcon

Симметричный ответ: Я cargo вообще не знаю и он абсолютно нечитаем.

anonymous
()
Ответ на: комментарий от WitcherGeralt

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

Harald
()
Ответ на: комментарий от RazrFalcon

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

anonymous
()
Ответ на: комментарий от Vark

Наверное стоило указать, что в существующих системах не хваетает, что пришлось писать свою?

vromanov
()

Действительно, очень жалко что в C/C++ мире стандартом стал угрёбищный CMake с угрёбищнейшим синтаксисом DSL.

Надеюсь когда-нибудь CMake ожидает такая же судьба, как и autotools.

EXL ☕☕☕☕☕
()

Извиняюсь, может где-то пропустил. Но что не так с meson, premake, xmake, scons? Ни одну в сложных проектах не использовал, а времени на эксперименты нет. CMake крутая мощная штука, но согласен, сделана безграмотно нужно мириться при использовании.

anonymous
()

Шли годы, текли реки, а кресты так и не смогли родить нормальную систему сборки. Собирайте гредлом чтоль, и то лучше

upcFrost
()

Ребята хотите понтовую систему сборки с куртизанками – напишите новый фронт для CMake. Хватит дробить эко систему, она и так еле живёт.

technic93
()

Ты сделал Gyp (gsrc.io) десятилетней давности. Не знаю, использует ли его ещё кто-то теперь. По-моему, все пришли к заключению, что конфигурация через json формат не является достаточно гибкой для реальных проектов.

rupert 😊😊😊😊😊
()
Ответ на: комментарий от Harald

Пока кросскомпиляция только на базовом уровне. Описанный сценарий я не пробовал, но думаю его при желании можно организовать, хотя простым это врядли назовешь, увы. Извините, но проект слишком молодой, чтобы я успел сделать сразу все.

Vark
() автор топика
Ответ на: комментарий от quantum-troll

Есть, да, я смотрел Please с год назад, как раз. К сожалению, он по описанию до сих пор некоторые вещи не умеет. Например нет поддержки windows. И установка curl https://get.please.build | bash не выглядит безопасной.

Vark
() автор топика
Ответ на: комментарий от pon4ik

А умеет в compiler commands как-то из коробки?

Я наверно глупо выгляжу, но я не понял о чем именно вы. Можно объяснить?

Vark
() автор топика
Ответ на: комментарий от invy

Я увидел 3rdparty на уровне: пропиши путь к бусту или туда где оно лежит.

Это надо только для Windows. Для Linux никакие пути указывать не надо и достаточно просто 'libs' : 'boost_timer'. Если вы знаете как системе сборки найти установленный буст в винде без указания путей, расскажите пожалуйста. Собственно Waf тоже не умеет, поэтому пришлось с путями «ужас» сделать.

Vark
() автор топика
Ответ на: комментарий от rupert

Я смотрел как-то Gyp. Да, по формату конфига оно похоже, согласен. Но, по-моему, на этом сходство и заканчивается. Не знаю насчет заключения, но вики утверждает, что хром перешел C GYP на GN потому что для их случая он был в 20 раз быстрей.

Vark
() автор топика
Ответ на: комментарий от Vark

Так же, как это делает cmake )

FindBOOST.cmake

Либо, когда сам собирпешь, тебе нужна возможность подключать в систему сборки коныигурацию библиотеки, которая уже интегрирует тебе пути.

invy
()
Ответ на: комментарий от a1batross

Можно узнать про какой модуль идет речь и про какие фиксы? Я тоже находил проблемы и баги в Waf. Пару вещей даже отрепортил автору Waf.

Vark
() автор топика
Ответ на: комментарий от invy

FindBOOST.cmake

ОК, я посмотрю что это такое. Спасибо.

Либо, когда сам собирпешь, тебе нужна возможность подключать в систему сборки коныигурацию библиотеки, которая уже интегрирует тебе пути.

Да, это вариант, я что-то похожее видел у Meson. Правда, как я понял, это не общее решение, к сожалению. Ну т.е. это надо поддерживать некий набор конфигураций для популярных библиотек. А для какой-нибудь частной, для которой еще нет такой конфигурации, все равно придется пути настраивать. В общем вынужденный костыль, но что поделать.

Vark
() автор топика
Ответ на: комментарий от RazrFalcon

Уже есть meson. Больше не нужно.

Мне он тоже поначалу понравился, но он недостаточно гибкий. Я так и не понял как в нём сделать ресурсы для Haiku (#7073). Без правки исходников самого Meson походу никак.

X512 👍👍👍👍👍
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от technic93

Хм, а как Вы себе представляете фронт для скрипта? Разве только, самые типичные случаи покрыть. Но вообще, он создавался для того, чтобы покрывать средствами того же самого языка случаи нетипичные.

AlexM
()
Ответ на: комментарий от Vark

Под windows придется сказать модулю, где установлен boost: BOOST_ROOT Но тут в любом случае сложно. У cmake есть еще возможеость указать CMAKE_PREFIX_PATH. И если там все в соответствии с FHS, то он многое понаходит.

invy
()
Последнее исправление: invy (всего исправлений: 1)
Ответ на: комментарий от X512

Пока разработчики cmake этим занимаются - меня устраивает. Там в других модулях страшнее костыли, вплоть до чтения реестра.

invy
()
Ответ на: комментарий от Vark

clang_compilation_database.py. Его проблема была в том, что ранее он создавал compile_commands.json только после успешной сборки, а так как нынче IDE пользуются этим файлом, стало неудобно.

Теперь он генерируется до сборки, но костылём.

a1batross
()
Ответ на: комментарий от a1batross

clang_compilation_database.py

Хм, я видел, что его периодически пилят, но как-то не изучал толком зачем оно надо. Надо будет изучить подробней. Просто он же лежит в extras у Waf, т.е. это из пользовательских модулей, которые автор Waf официально не поддерживает. Там есть как работающие, так и «протухшие» уже. Но спасибо за ответ.

Vark
() автор топика

Какую нерешенную другими системами генерации проблему решает данная система?
В чем ее приимущество перед столпами генерации сборочных скриптов?

Jetty
()
Ответ на: комментарий от Vark

CMake взлетел потому что «умеет во все». т. е. генерить make, msproj и так далее. поддержка ninja стало последней каплей имхо чтобы cMake стал топом. я незнаю в курсе ли автор ZenMake или нет - но в больших c++ проектах очень важны быстрые инкрементальные билды и ninja это то что позволяет это сделать и получить бесплатно используя cMake. без мгновенных билдов и скорости ninja новая билд система в C++ имхо не нужна насколько бы красив ее синтаксис небыл - пишем то описание модулей мы один раз а вот собираем потом тысячи и это то что должно работать быстро.

anonymous
()
Ответ на: комментарий от Vark

В случае новой тулзы, это наверное будет одна из ключевых фич, вот почему:

Поддержки в IDE нет, а в наше время даже виммеры и эмаксеры избалованны автокомплитом и удобной навигацией по коду. И compiler commands это наверное самый короткий путь к хорошего качества подобному функционалу.

pon4ik
()
Ответ на: комментарий от Vark

я такой вопрос не задавал. я так понимаю была проблема не решаемая другими средствами, и поетому вы решили ее сделав свою систему генерации.. Вот и иетересно узнать что за проблема была...
Или банальный nih?

Jetty
()

Нет-нет... вот этот вопрос «Зачем еще одна система сборки?» должен стоять в заголовке новости как риторический вопрос с очевидным ответом «не нужна».

matumba
()
Ответ на: комментарий от xaizek

CMake и Meson это тоже генераторы

Нет, конечно. Определение параметров окружения, поиск зависимостей, поддержка разных компиляторов и платформ - до бэкэнда это всё не доходит.

anonymous
()
Ответ на: комментарий от Vark

А почему CMake был назван генератором, я не понял. Он же вроде полностью самостоятельный, нет? Я чего-то не знаю?

Осилятор, не волнуйся

Всё-таки у него есть причины волноваться.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.