LINUX.ORG.RU

premake?

 


0

1

Добрый день.

Искал тут как бы взять что-то проще cmake, наткнулся на это https://premake.github.io

Раньше ни разу не слышал, у кого есть опыт использования. Поделитесь как оно.

Спасибо.



Последнее исправление: Dimez (всего исправлений: 1)

Не понимаю, зачем оно, если всё равно потом создаёт makefile, который надо выполнять в make. Есть хоть какой-то смысл тянуть эту зависимость тогда вместо того, чтобы сразу писать для make? И это не упоминая то, что использование этой софтины будет требовать её изучение в значительной мере.

CMake мне лично тоже не нравится (причём ещё больше), но он хотя бы сам по себе работать может.

Bfgeshka ★★★★★
()

Вообще интересно, но после одного раза мне не понравилось, больше не пробовал. Для маленького проекта постарался бы обойтись GNUmakefile плюс pkg-config. Для большого - не знаю, все варианты чем-то плохи.

Если Вам интересно посмотреть на альтернативные системы сборки для C/C++, почитайте ещё про b2 (Boost.Build, работает с Jamfile).

anonymous
()

если хочешь чтобы этим проектом пользовались другие - то цмаке единственный вариант, дефолт в мире С/С++. Просто изучи как его правильно готовить.

Lrrr ★★★★★
()

В качестве альтернативе cmake могу порекоммендовать xmake. Конфигурация на lua, но почти всегда всё получается достаточно просто и декларативно. Есть интеграция со всеми (?) пакетными менеджерами C++ (+ свой xrepo), есть поддержка других языков. Как бонус, можно генерировать cmake-файлы, то есть можно дать опцию сборки без самого xmake.

Premake не пробовал

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

Я честно думал, что оно само собирать умеет помимо генерации билдскриптов.

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

Вообще там много готовых функций встроено, проще делать скрипты для кроссплатформы, нет необходимости прописывать кучу флагов сборки вручную. Ещё до кучи есть полезные утилиты — ccmake, cmake-gui и cpack. На make же приходится писать кипу шифро-скриптов вручную.

Dr64h ★★★★
()

Проще кому и чем?

Для тех кто будет использовать твой софт точно не проще, потому что это маргинальное гoвно которое никто не использует и не знает - когда я делаю пакеты под свой дистрибутив я ожидаю сборку на cmake или meson, и они работают из коробки, в дистрибутиве есть инфра которая правильным образом передаёт им все нужные флаги. premake я не ожидаю, сборочной инфры под него нет, как в нём настроить соблюдение сборкой всех требований дистрибутива (CC/CXX/CFLAGS/CXXFLAGS, поиск зависимостей, опциональные зависимости, установка в правильные каталоги и т.д.) я понятия не имею, не горю желанием выяснять и скорее всего или выкину поделку его использующую или напишу CMakeLists.

А тебе, лично если нужно что-то простое, следовательно нет никаких специфических требований, чем сложно

project(foo)
add_executable(foo foo.c)

и вариации с 2-3 дополнительными строчками типа find_package() или option()? А если специфические требования есть, на на cmake они решаются стандартным способом, а в premake будешь просто писать всё руками на их недоязыке, а так как он убог, внешними скриптами. И не вздумай озвучить аргумент что тебе не нравится что «cmake - переусложнённый комбайн», это сразу роспись в профнепригодности. Если ещё не дорос до такого понимания, мотай на ус: все универсальные инструменты - комбайны (начиная с ядра), и это нормально, cmake при этом стандартен, прост в использовании, быстр, и у всех, кто собирает C/C++ из исходников, он уже стоит.

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

Для пользователей «просто GNU make» у любого кому это потом приходится собирать, найдётся список из нескольких десятков пунктов в самописных рукожопых майкфайлах не учтённых. Так, лишь самые распространённые: CC/CXX?=, правильная работа с C(XX)FLAGS?= и C(XX)FLAGS+=, PREFIX, DESTDIR, правильный вызов submake, all target, непортабельные опции install, настраиваемые подкаталоги установки, -Werror, -march=native, вызовы git, захардкоженные пути к библиотекам, использование -l, использование -I вместо -isystem, отсутствие -I/-L, команды сборки без эхо, ansi последовательности в скриптах, -lrt, миллионы их.

Советуя руками писать мейкфайлы, ты не только не заешь как с этим всем правильно работать, ты некомпетентен настолько что даже не знаешь что столько нюансов вообще существует.

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

Ну то есть ядро Линукса может собираться обычным make, а всякие васяноскрипты и сервисы, видимо, сложнее устроены в архитекрутном плане :)

Так и есть. Сборка ядра почти не зависит от внешнего окружения.

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

Да, зависимостей мало: https://packages.gentoo.org/packages/sys-kernel/vanilla-sources/dependencies

Но их нужно отслеживать? И что, добавление большего числа зависимостей, это качественное изменение? Нет, количественное. Значит, простого make хватит всем.

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

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

Конкретно о Meson я не говорил, к тому же у него есть реализация не только на Питоне.

Dr64h ★★★★
()