LINUX.ORG.RU

Чем собираете нативный код?

 , , ,


2

4

Вопрос про систему сборки. Какими из перечисленных Вы предпочитаете пользоваться / используете в «продакшене»?

  1. GNU Make 494 (51%)

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

  2. CMake 444 (46%)

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

  3. Qmake 162 (17%)

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

  4. Autotools 138 (14%)

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

  5. Простой (свой) скрипт сборки (bash, batch, ...) 114 (12%)

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

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

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

  7. Maven 63 (6%)

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

  8. Ninja 53 (5%)

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

  9. nmake (Visual Studio) 46 (5%)

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

  10. Gradle 43 (4%)

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

  11. BSD Make 37 (4%)

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

  12. QBS 21 (2%)

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

  13. Своя системя сборки (аля flower в Opera) 18 (2%)

    ***********

  14. Scons 17 (2%)

    ***********

  15. Premake 4 (0%)

    **

  16. Tup 2 (0%)

    *

Всего голосов: 1735, всего проголосовавших: 971

★★★★★

Проверено: jollheef ()

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

А можно поподробнее (возможно перейду с qmake)? Наиболее эффективным образом, это типо -mtune=native указывают?

robus ★★★★★
()

несмотря на то что в опросе вещи из разных опер..

GNU Make - «наше всё». И плюс скрипты конечно.

autotools,qmake всё-же средства конфигурации, чем сборки и не стоило путать кислое с мягким :-)

модно-молодёжный CMake не осилил. Микрософтовский nmake вызывает рвотные рефлексы

MKuznetsov ★★★★★
()

Maven, CMake+make/ninja

секунду. а что, кто-то юзает мавен для нативного кода (не для жабы)???

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

gnu make для embedded, cmake для остального.

Uzix
()

На работе все проекты на premake5. Дома cmake и для мелких или старых проектов gnu make.

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

Половина пользуется не одним инструментом сборки?

Разрыв шаблонов, кто-то использует несколько разных инструментов.

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

А можно поподробнее (возможно перейду с qmake)? Наиболее эффективным образом, это типо -mtune=native указывают?

Нет, это «типо» максимально параллельно и без ненужной пересборки того что не нужно пересобирать. -mtune=native можешь указать только ты сам.

slovazap ★★★★★
()
  • gn+ninja (раньше было gyp+ninja);
  • go build;
  • своя кастомная (жуткий фарш, с синтаксисом и названием файлов от CMake, кучей внутренних заморочек про селективный чекаут зависимостей, etc.), которая к тому же умеет собирать в статический нативный бинарь питонячий код).
alex_ac
()

Вообще у в продакшн уходит код из-под билд-сервера, cgi скрипты умеет он. Но в этих скриптах я обычно запускаю qmake или mingw32-make.

aiqu6Ait ★★★★
()

Для своих простых проектов (не более 150 основных cpp файлов и 5-6 библиотек) предпочитаю qmake. Для работы используется VS и некоторые другие проприетарные системы.

Два вопроса к проголосовавшим:
1. 200 человек ответивших GNU Make, вы пишите Makefile своими руками? Если нет, то с помощью чего создаете. Если да, то какой сложности ваши проекты (поддерживаемые платформы, объем кода и зависимостей)

2. 170 человек ответивших CMake, дайте пожалуйста ссыль, которая объяснит почему я могу захотеть использовать CMake. Из моего очень маленького опыта использования, я знаю только то, что у него ужасный и неустоявшийся синтаксис.

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

1. Работал когда-то над проектом в 60-70 файлов (.с), не считая хедеров. Из-за требований совместимости было накостылизировано в Make (даже не GNU). Это было мучительно. Спасало одно: изменять мейкфайлы доводилось не часто и то по мелочи.

2. Синтаксис​ у CMake действительно наркоманский. Но в остальном он очень неплох: отлично применяется для сложных сценариев сборки (конфигурация, флаги компилятора, препроцессинг), масштабируется (поддержка «distributed build»), в мире много сторонних расширений. Плюсом языка CMake является то, что он по большей мере декларативный, а боль наступает тогда, когда необходима императивность (она есть, но сложно). Также CMake поддерживается львиной долей IDE, что тоже добавляет удобства. Есть еще сопутствующие програмулины: ctest, cpack. Также документация у него очень даже неплохая (особенно радует, что встроенная документация копирует то, что есть онлайн).

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

Также CMake поддерживается львиной долей IDE, что тоже добавляет удобства.

Шта? Кто его нормально поддерживает?

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

то с помощью чего создаете.

find src -type f -and -name '*mask*' …

Если да, то какой сложности ваши проекты

Для школопроектов в тринадцать вложенных директорий, в каждой по три с половиной файла, в каждом по одному классу на 60 строк, может прокатить и какая-нибудь игрушка уровня CMake, но на корпоративных проектах в 0.5М sloc я выживал только благодаря make'у.

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

Ага, я пользуюсь пятью (если не считать Visual Studio):

  • GNU Make (куда без него, во многих проектах используется и я вынужден с ним считаться)
  • CMake (мне он больше всех нравится)
  • Qmake (если пилю приложение на C++ с использованием Qt в QtCreator, то смысл переключаться на CMake? Проще гуглить по Qmake в связке с Qt, если вылезут какие-то траблы)
  • Autotools (очень популярны, есть проекты в которых используются)
  • Gradle (я под Android простенькое приложение делал, мне понравилось)
peregrine ★★★★★
()
Ответ на: комментарий от Tweaker

200 человек ответивших GNU Make, вы пишите Makefile своими руками? Если нет, то с помощью чего создаете. Если да, то какой сложности ваши проекты (поддерживаемые платформы, объем кода и зависимостей)

Это для очень простых проектов, по сути Hello World-ов, не больше 20 файлов и пяти библиотек. Пишу руками.

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

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

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

QtCreator, кажется Anjuta и Kdevelop тоже его поддерживают без особых проблем. NetBeans точно можно заставить его переваривать, погуглив немного (хоть при создании нового проекта и нельзя его выбрать из коробки).

peregrine ★★★★★
()

MSBuild, XCodeBuild и GYP незаслуженно забыли. Между прочим, именно эти три имеют хороший дизайн в сравнении с императивной мутью типа make/autotools/cmake/nmake

P.S. хотя в CMake конечно есть решения на все случаи жизни

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

Я вот хочу CLion попробовать, а он исключительно CMake.

Tweaker ★★★★☆
()

GNU Make / Autotools.

В списке еще не хватает meson.

Zubok ★★★★★
()

веником собираю в совок))

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

своя кастомная (…, которая к тому же умеет собирать в статический нативный бинарь питонячий код).

Ого, в опенсорц не выкладываете своего монстра?

Virtuos86 ★★★★★
()

Java проекты - maven

C - make (но проекты в отличии от Java очень маленькие) - просто и очень удобно

Qasta
()

Хм. Скажите, а как могу я настроить CMake, чтобы он собирал? Как ни пробую, он только сборочную систему для GNU Make генерирует. А собирать -- не хочет. Ну и qmake тоже, чтобы два раза не вставать. И что такое "нативный код"?

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

императивной мутью типа make/autotools/cmake/nmake

Ты принял таблетки или наоборот - пропустил приём?

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

C и C++ надо убить хотя бы только из-за обилия сборочных инструментов.

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

LamerOk ★★★★★
()

maven для нативного код? O_o
«О-о-о! Мсье знает толк в тонких извращениях!»(цы)

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

Скажите, а как могу я настроить CMake, чтобы он собирал?

cmake --build .

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

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

Также не работало переименование файлов.

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

С точки зрения опроса не интересно, какой бекенд используется для CMake. Главное — используется CMake. А опрос про бекенды СMake слишком узкий.

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

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

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

Ну вот в итоге половина (большая) проголосовала за GNU Make, половина за CMake. И почти никого за maven. Что сиё распределение должно значить? Что make выиграл у cmake? А gcc получается выиграл у vim, но проиграл леди гага? Или может быть код, сгенерированный javac недостаточно "нативный", поэтому так мало? Какова ценность по вашему такого голосования, сколько единиц?

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

Если бы я задавался вопросом «кто выиграет» — не делал бы мультивыбор. А показатели популярности среди сообщества LOR вполне себе ценные. Единственное, что меня удручает — много голосов за «другая». Это может значить, что некоторые популярные системы сборки не были учтены, а напр. Scons, Tup и Premake можно было выкинуть.

Ну и как говорится «хочешь сделать что-то хорошо — сделай это сам» ;-)

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

Лудше лор переделать :) Чтобы в режиме мультивыбора рисовал столбики не по каждому бину, а сразу по комбинациям (простите за топорное объяснение). Тогда классовая структура общества будет хорошо видна.

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

Плюсом языка CMake является то, что он по большей мере декларативный

??

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

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

Наверное у нас разные взгляды на понятие «декларативное программирование». Но я не буду претендовать на правоту, ибо не уверен в своих знаниях в данной области. Может в другой раз можно будет подискутировать, как подучу мат. часть :)

KennyMinigun ★★★★★
() автор топика

Свой скрипт сборки на пхп. Да, извращение. Но, да, удобно.

PS. Собирает файлы на рендер (Arnold .ass) - переписывает пути, дописывает процедурники, итд.

moooV
()

Чем я только не собираю.

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