LINUX.ORG.RU

Какую систему сборки вы предпочитаете?

 , , , ,


1

5

В комментариях хотелось бы увидеть пояснение почему используете то или иное. Всем добра и что бы всё собиралось как надо ::)

  1. Makefile 316 (45%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Cmake 236 (33%)

    **********************************************************************************************************************************************************************************************************************************************

  3. Не знаю, просто жму build в IDE 124 (17%)

    *****************************************************************************************************************************

  4. bash/sh/etc скрипты 109 (15%)

    **************************************************************************************************************

  5. qmake 99 (14%)

    ****************************************************************************************************

  6. Apache Maven 74 (10%)

    **************************************************************************

  7. Gradle 73 (10%)

    *************************************************************************

  8. Automake 58 (8%)

    **********************************************************

  9. Другой вариант (в комментариях) 56 (8%)

    ********************************************************

  10. Ninja 33 (5%)

    *********************************

  11. Своя система сборки 33 (5%)

    *********************************

  12. Meson 29 (4%)

    *****************************

  13. Qbs 25 (4%)

    *************************

  14. Apache Ant 13 (2%)

    *************

  15. Waf 8 (1%)

    ********

  16. SCons 6 (1%)

    ******

  17. imake 3 (0%)

    ***

Всего голосов: 1295, всего проголосовавших: 709

Deleted

Проверено: Licwin ()
Последнее исправление: Deleted (всего исправлений: 4)

Ответ на: комментарий от SkyMaverick

Для себя - сижу пробую meson. Вроде бы пока отторжения не вызывает. Может только пока.

уже тот факт что он на питоне должен вызывать отторжение.

waker ★★★★★
()
Ответ на: комментарий от Deleted

Но это же куча писанины. И как в make сделать адекватное сообщение о нехватке библиотеки?

сообщение о нехватке библиотеки выдает линкер, а не make.

но можно сделать так же, как делают всякие автотулсы — дергать pkg-config предварительно.

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

Makefile

this. Не без недостатков, но все остальное вообще швах: либо привязано к конкретной платформе/языку, либо NIH прет изо всех щелей, либо просто сделано хипстерами для хипстеров «лишь бы не по-человечески». Make же относительно прост, достаточно удобен, ничем не ограничивает полет фантазии и, черт побери, делает одну вещь, но делает хорошо, не пытаясь кроме разруливателя зависимостей быть до кучи менеджером пакетов, системой контроля версий, кэширующим сервером и бог знает чем еще.

Barracuda72 ★★
()
Ответ на: комментарий от waker

Субъективно по ощущениям: дурацкий питоновский кодинг-стайл meson-а меньшая боль по сравнению со странноватым cmake (в частности и с его недоlisp-ом).
Если отвлечься от питона, то meson довольно простая система, работу вроде как выполняет (как минимум, мне пока не встретилось задачи, которую не описать), и даже, на удивление, шустро.

SkyMaverick ★★★★★
()
Ответ на: комментарий от waker

Понимаю. Если не ошибаюсь в cmake есть такая возможность. Мой вопрос был скорее о том, можно ли на голом make сделать так же, без лишнего геморроя.

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

Понимаю. Если не ошибаюсь в cmake есть такая возможность.

cmake - это просто генератор makefiles (который — сюрприз! — выполняются черщз make)

Мой вопрос был скорее о том, можно ли на голом make сделать так же, без лишнего геморроя.

смотря что подразумевать под лишним геморроем и голым make.

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

cmake - это просто генератор makefiles

Не только. https://cmake.org/cmake/help/v3.10/manual/cmake-generators.7.html
Мне показалась удобной возможность cmake https://cmake.org/cmake/help/v3.10/manual/cmake-packages.7.html
Если я правильно понимаю, то наличие нужных библиотек, заголовочных файлов итп, cmake проверит до генерации файла сборки или я ошибаюсь?

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

Интересная вещь. Только я не понял как менять дефолтные флаги компилятора для --buildtype debug и release. Единственное что я нагуглил, оказалось предупреждение и совет: дефолтные флаги могут меняться со временем (пользователь, видимо, не имеет на то прав, только разработчики) потому лучше использовать plain и определять все флаги вручную. Это не фатально, но как-то недружелюбно, что ли. Может дело, что он ещё в бете.

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

Меня очень привлекает этот вариант своей доступностью для пользователя. Помню ещё как пользователь (без минимальных знаний в программировании) имел дело с этой системой, понравилась в первую очередь доступными сообщениями о нехватке чего-либо, ну и есть по умолчанию, наверное, в любом дистрибутиве. Только вот сходу не удалось найти какой туториал или доступных примеров для начинающих. Также беспокоит отказ таких проектов как GNOME и GTK+ от тулзов в пользу мезона.

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

Не только.

но в том числе.

и да, поиск библиотек делается самим cmake. но ничто не мешает делать это из makefiles.

waker ★★★★★
()
Ответ на: комментарий от Barracuda72

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

кстати, странно, что не упомянули Kbuild, написанный целиком на makefile.

demidrol ★★★★★
()
Ответ на: комментарий от Deleted

программы на питоне имеют свойство самопроизвольно отваливаться и кидаться трейсбеками по поводу и без.

waker ★★★★★
()
Ответ на: комментарий от SkyMaverick

кодинг-стайл meson-а меньшая боль по сравнению со странноватым cmake (в частности и с его недоlisp-ом).
со странноватым

да у cmake наркоманский синтаксис

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

программы на питоне имеют свойство самопроизвольно отваливаться и кидаться трейсбеками по поводу и без.

даже если руки кодеров прямые? опен сорс проекты конечно все в бесконечной бете, но все не так плохо

кстати тоже использую premake, годная вещь

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

Не, этот трейсбек просто понять без по литра невозможно. Даже сегфолт тихий более информативен чем выхлоп трейса питона

Deleted
()

ЯННП, люди которые проголосовали за makefile, вы все сами руками пишите? Вообще ССЗБ что ли?

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

Вообще ССЗБ

Почему?

вы все сами руками пишите?

А ты код программы которую нужно собрать тоже генерируешь автоматически?

Написать внятный Makefile гораздо более адекватнее и проще в большинстве случаев чем использовать билчерерразруливатель комбайн, иногда надо, да, но нет проекта такой сложности который нельзя описать в Makefile. Он же простой как палка и железно делает то что должен в отличии от ...

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

даже если руки кодеров прямые?

судя по всем прогам на питоне, с которыми мне приходилось сталкиваться, руки у всех питоно-кодеров не вполне прямые...

waker ★★★★★
()
Ответ на: комментарий от Deleted

ЯННП, люди которые проголосовали за makefile, вы все сами руками пишите? Вообще ССЗБ что ли?

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

waker ★★★★★
()
Ответ на: комментарий от Deleted

А ты код программы которую нужно собрать тоже генерируешь автоматически?

Если это какой-нибудь api-wrapper, то да. Причем каким-нибудь питон скриптом.

билчерерразруливатель комбайн

cmake

fixed

Я просто держу директорию которая выглядит вот так:

build
src
lib
premake.lua

и копирую ее когда надо.

нет проекта такой сложности который нельзя описать в Makefile

так я себе и представлял лозунг эталонного ССЗБ

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

А что тогда мусье скажет про ghc --make? А ведь разницы между «build в IDE» и этим не так уж и много (для пользователя).

yoghurt ★★★★★
()

Уже вторая страница, а никто так ещё и не сказал, что Makefile - как бы не система сборки сама по себе, «сборка» им является лишь частным случаем использования.

То ли дело лисп на мейке написать! https://github.com/shinh/makelisp

yoghurt ★★★★★
()

Да тут дело даже скорее не в предпочтениях. приходится иметь дело с: maven, sbt, cabal/stack, Makefile (autotools), cmake, gradle.

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

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

Вспоминаются cmake туториалы которые писали аутисты для инопланетян

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

каких таких задач кроме сборки проекта?

запуск тестов, деплой, локализация, и т.п.

работа над проектом не заканчивается компиляцией.

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

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

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

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

Еще с доисторических времен исповедую простое правило: не использовать в именах файлов и каталогов что-либо, отличное от [a-zA-Z0-9_-.] , ибо как и где оно аукнется - пес его знает. Впрочем, в последнее время все-таки ослабил это требование по отношению к некритичным данным - фото котиков, аудиозаписи котиков и видео котиков вполне неплохо хранятся и в путях с пробелами. А вот для каких-то проектов - все по старинке.

Barracuda72 ★★
()
Ответ на: комментарий от Deleted

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

иногда даже задачи другой билд-системы можно автоматизировать через make. например, у меня есть makefile который дергает gradle и adb, + ряд других вещей, для работы над андроидным проектом.

писать «make» проще чем «gradlew --daemon -p app assembleRelease»

waker ★★★★★
()

Не разработчик, но make отличный инструмент чтобы интегрировать вещи вроде Terraform, Ansible, и т.д.

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

программы на питоне имеют свойство самопроизвольно отваливаться и кидаться трейсбеками по поводу и без.

))) Походу, мсье джавист, не иначе :)

Linfan ★★★★★
()

Кстати, в трете и лично топикстартером не помянут классический питонский distutils - ничем не хуже жабовских сходных погремух.

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

))) Походу, мсье джавист, не иначе :)

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

waker ★★★★★
()
Ответ на: комментарий от yoghurt

Прочитал, но что-то ничего особо аргументированного не нашел.

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

waker ★★★★★
()
Ответ на: комментарий от tailgunner

Каждый раз, когда начинаю читать эту книгу, заканчиваю фейспалмом на перепутанных host и target.

береги лицо, Сеня (с) ))

shty ★★★★★
()
Ответ на: комментарий от yoghurt

который типа закрывает брешь.

Вспомнил ещё несколько наркоманских приколов CMake, с которыми сталкивался лично.

1. В Qt-проектах если cpp-файлы и хедеры лежат в разных директориях то бишь, к примеру, src/ для .cpp и include/ для .h, то кодогенератор MOC просто не запускается.

Решение костылём: свалить всё в одну директорию или напихать заголовочные файлы в add_executable()

Посты на ЛОРе с этой проблемой:
Как сделать из Qt pro проекта CMake? (комментарий)
Cmake Qt 5.6 undefined reference to vtable (комментарий)

2. Использование кастомных линкёров, вроде того же gold или тех, что имеются в Embedded-тулчейнах.

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

Решение было костылём: лезть в дебри CMake и использовать всякие хаки, вроде переменной CMAKE_C_LINK_EXECUTABLE со всей строкой линковки, которую нужно было оборачивать скриптом-прокладкой, потому что параметры были захардкожены и передавались только для GCC-совместимых линковщиков.

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

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

1. В Qt-проектах если cpp-файлы и хедеры лежат в разных директориях то бишь, к примеру, src/ для .cpp и include/ для .h, то кодогенератор MOC просто не запускается.

И патч до сих пор никто не принёс?

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

По-моему, линкер до сих пор инферится из пути, указанного в CMAKE_C_COMPILER (пусть даже с префиксом).

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