LINUX.ORG.RU

система для сборки с зависимостями для C++

 , ,


4

12

Нужна система для сборки с зависимостями для C++

В других технологиях есть альтернативы:
Maven - Java
Pip & Eggs - Python
Gems - Ruby
CPAN - Perl
cabal - Haskell
CTAN - TeX

Попробовал найти что-то подобное для Крестов, но с первого захода не осилил :(

Хотелось бы что-то Maven-like: XML с декларативным описанием зависимостей (исходников и бинарников) и описанием настроек сборки.

Важно:
- кроссплатформенность (Lin, Win, OSX) и возможность запускать из голой консоли
- зависимости должны лежать в интернете
- в том числе пред-собранные, без исходников, отдельно для каждой платформы/компилятора/...
- сборка через что-нибудь адекватное типа cmake
- удобная настройка выхлопа под разные дистрибутивы (на лине - использование системных либ, на шиндовсе и маке - «всё своё тащу с собой»)
- очень желательна искоробочная работа с гитхабом и другими подобными источниками (чтобы не поднимать свой сервер для работы с непубличными артефактами)

В качестве точки отсчёта, предлагаю считать за компиляторы только GCC-Linux, Clang-OSX и MSVS-Windows в «текущей» версии стандарта C++ (общяя часть для всех этих компиляторов) c cmake в качестве бэкенда сборки - всё остальное ненужно.

Спасибо за годные советы! С меня как всегда - ничего :3

★★★★☆

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

okay.jpg

Отказываться ставить какие-то утилиты на компьютер разработчика просто потому что утилит «слишком много» — это диагноз.

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

Отказываться ставить какие-то утилиты на компьютер разработчика просто потому что утилит «слишком много» — это диагноз.

Ты просто еще многого не знаешь о своем ремесле. И, судя по проблемам с пониманием текста, никогда и не узнаешь.

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

Ты серьезно предлагаешь ставить жирный мавен/грэдл + 100500 зависимостей, вместо легкого мэйкфайла и пары скриптов? Лол.

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

Ты серьезно предлагаешь ставить жирный мавен/грэдл + 100500 зависимостей, вместо легкого мэйкфайла и пары скриптов? Лол.

На компе разработчика заниматься экономией байтов нет смысла.

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

Ты просто еще многого не знаешь о своем ремесле

А, ну да, что же это я со своим рылом да в ряды интеллигенции уровня hello world.

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

А, ну да, что же это я со своим рылом да в ряды интеллигенции уровня hello world.

Да, лучше бы ты не лез.

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

Есть мнение, что реализовать поддержку системы сборки на основе нормального динамического языка в IDE гораздо сложнее, чем поддержку систем сборок с «декларативными» описаниями в XML/JSON/YAML или систем сборок с собственным динамическим говноязычком (вроде CMake или различных вариаций на тему Jam-а).

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

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

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

Ну да, ну да. Одно дело разбираться с правилами сборки на мейнстримовых языках вроде Python/Ruby/Lua. Другое дело — изучать чье-то наколеночное творение.

Вот у декларативных всё гораздо лучше.

Это у каких например? Неужели у Make-правил?

eao197 ★★★★★
()

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

packages.debian.org

в качестве бонуса, он умеет не только C++

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

Отказываться ставить какие-то утилиты на компьютер разработчика просто потому что утилит «слишком много» — это диагноз.

Машина сборки бинарей/пакетов под целевую платформу ≠ машина разработчика. Он об этом. И не на каждый билд-сервер можно накатить своего любимого говнософта.

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

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

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

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

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

к примеру, опенсорцную софтину, то в его интересах поддерживать стандартные инструменты

Это когда делают ненужно. А когда делают нужно, то достаточно readme, в котором будет четко прописано, что и как нужно поставить для популярных платформ: ubuntu, debian, redhat, windows, osx.

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

когда работал с серверами, большинство (процентов 60) клиентов были на убунту. Еще процентов 30 на дебиане. Еще с пару десятков человек на рхеле и центоси. Весь остальной шлак мы просто открытым текстом не поддерживали - н-р аж целым двум (!), одиноким в этом огромном мире, гентушникам пришлось перепаковывать rpm'ки. Так что насчёт базовых платформ всё очень просто: существует Ubuntu/deb и всё остальное.

насчёт того, что на серверах никто не ставит «говнища» - ну ты пошутил! Какого только говнища мы не видели. Проблема скорей не с самим фактом установки говнища, а с того что хозяева серверов - тупые как деревяшки, и распарсить readme в половине случаев не могут. Поэтому идут и покупают услуги интеграторов, которые накатят им говнища профессионально.

А с точки зрения производителя софта, readme должно состоять из одной строчки: apt-get install mypackage. Всё что сложнее этого хозяева серверов парсят с лютыми фейлами, и потом трахают мозг техподдержке. Правильная стратегия - «всё своё ношу с собой». Например, если используешь базу данных, изволь забандлить её в свой пакет, и скрыть от пользователя что она там вообще есть. Потому что если пользователь самостоятельно начнёт настравать postgresql - пиши пропало.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от kachsheev

Embedded Вам что-нибудь говорит? Обычно там всё по-минимуму.

Никто не разворачивает make на минимальной целевой системе. Это просто не нужно.

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

Во-первых, название у конкретного дистрибутива есть или нет?

Во-вторых, embedded — это очень размытое понятие, под которое сейчас попадают и 8-битовые микроконтроллеры и гигагерцные многоядерные ARM-ы с гигабайтами памяти на борту.

В-третьих, для маломощной embedded платформы с минималистичным Linux-ом на борту вы сборку проекта прямо на целевом устройстве производите?

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

это для попсятины ПК-шной. а на серверах говнище всякое никто не ставит.

95% на серверах это windows, ubuntu, debian и redhat (centos). Либо дистрибутивы построеные на базе выше перечисленных. Говнище, не говнище, но это работает и приносит людям пользу.

Но теперь я понимаю, откуда берутся сырцы, которые хрен скомпиляешь и поставишь под эти 95%.

Ибо их автор особо упорот каким-нибудь корпоративным регламентом, придуманный не менее упоротым админом-оригиналом: «Есть целевая платформа и программа должна собираться на ней». И считает, что 99% остального мира должны с этим считаться.

Единственно, что хорошо, так это 95% подобных сырцов - ненужно.

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

А когда делают нужно, то достаточно readme

Не, тогда подписку на саппорт оформляют и «как?» делают специально обученные человеки, знающие как заставить работать «нужно» в $DISTR_NAME (если вообще в линуксе) :)

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

Сударь, вы настолько тупой, что на вопрос «Что за Linux-ы такие?» вы отвечаете «У меня вот на ноутбуке его нет»? Или пошутить пытаетесь?

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

да я вроде всё читаю.
вы тут детсад развели: «у меня на ноуте нет make, значит мой линюкс существует без make». детки, просто кто-то за вас сделал всю работу, собрал вам пакетики, чтобы вы могли играться в игрушки. но на деле всё выглядит сложнее. и make всегда нужен, даже если вы в своей песочнице его не видите.

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

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

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

Дорогой мой, то что ./configure или что-то там ещё сейчас обычно генерирует makefile - исключительно прихоть истории, он может генерировать что угодно.
Более того, написать конвертацию makefile во что-то другое, более вменяемое - дело одного рабочего дня. У нас подобные задачки на собеседовании дают.
Если вы из своей песочницы не видите, что make не нужен никому кроме упоротых ретроградов - сидите в ней дальше.

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

Да я не то чтобы фобией страдаю, я скорее пытаюсь дурачкам объяснить что они зря так дружно онанируют на него.

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

если онанирущих на мейк большинство, может это ты что-то не понимаешь в его полезности и юзабельности?

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

Да мне уж поздно учиться.

А вы таки сможете назвать имя дистрибутива Linux-а на вашем ноутбуке? Или тайна сия велика есть?

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

А вы таки сможете назвать имя дистрибутива Linux-а на вашем ноутбуке? Или тайна сия велика есть?

Centos

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

До недавнего времени он не понимал юникод в файловой системе.

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

Да мне уж поздно учиться.

тогда не пишите мне.

А вы таки сможете назвать имя дистрибутива Linux-а на вашем ноутбуке? Или тайна сия велика есть?

вы таки можете пройти в профиль и прочитать там все вас интересующее.

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

если онанирущих на мейк большинство, может это ты что-то не понимаешь в его полезности и юзабельности?

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

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

если их не большинство, почему, например, в Visual Studio в комплекте идёт nmake - мелкософтовская версия мейка, и активно поддерживается? Там тоже затесалась кучка онанирующих? :)

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

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

упоротые == все, кто думает не так, как я? )

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

нет, почему же, упоротые - это упоротые.

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

Потому что, внезапно, M$ борется за developers, developers, developers.
А онанирующие на утилиту столетней давности - тоже иногда ими являются.
При этом make-о-любам на остальных как правило насрать, т.к. они считают себя правыми во всем.

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

При этом make-о-любам на остальных как правило насрать, т.к. они считают себя правыми во всем.

Значит, нелюбители make - это всё-таки ущемлённое в правах меньшинство, а не большинство? )

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

При этом make-о-любам на остальных как правило насрать

Ну почему же «на всех»... только на упоротых.

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

тогда не пишите мне.

Не говорите людям, что им делать, и людям не придется говорить, куда им пойти.

вы таки можете пройти в профиль и прочитать там все вас интересующее.

Таки по каким внешним признакам можно было узнать, что это написано у вас в профиле?

И с чего вы взяли, что в Debian-е нет make?

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

Не говорите людям, что им делать, и людям не придется говорить, куда им пойти.

Дорогой, пока вы живете в обществе - вам придется придерживаться его норм.

И с чего вы взяли, что в Debian-е нет make

Читать, дорогой мой, учат в начальной школе, вы ее прогуливали или как?

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

Читать, дорогой мой, учат в начальной школе, вы ее прогуливали или как?

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

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

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