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 ★★★★★
()
Ответ на: комментарий от RazrFalcon

Я makefile вообще не знаю и он для абсолютно нечитаем.

Зачем так сразу признаваться в неосиляторстве

Harald ★★★★★
()

А как 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 десятилетней давности. Не знаю, использует ли его ещё кто-то теперь. По-моему, все пришли к заключению, что конфигурация через 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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.