The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск сборочной системы Meson 1.3

20.11.2023 10:19

Опубликован релиз сборочной системы Meson 1.3.0, которая используется для сборки таких проектов, как X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME и GTK. Код Meson написан на языке Python и поставляется под лицензией Apache 2.0.

Ключевой целью развития Meson является обеспечение высокой скорости сборочного процесса в сочетании с удобством и простотой использования. Вместо утилиты make при сборке по умолчанию применяется инструментарий Ninja, но возможно применение и других бэкендов, таких как xcode и VisualStudio. В систему встроен многоплатформенный обработчик зависимостей, позволяющий использовать Meson для сборки пакетов для дистрибутивов. Правила сборки задаются на упрощённом предметно-ориентированном языке, отличаются хорошей читаемостью и понятны пользователю (по задумке авторов разработчик должен тратить минимум времени на написание правил).

Поддерживается кросс-компиляция и сборка в Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS и Windows с использованием GCC, Clang, Visual Studio и других компиляторов. Возможна сборка проектов на различных языках программирования, включая C, C++, Fortran, Java и Rust. Поддерживается инкрементальный режим сборки, при котором пересобираются только компоненты, напрямую связанные с изменениями, внесёнными с момента прошлой сборки. Meson можно использовать для формирования повторяемых сборок, при которых запуск сборки в разных окружениях приводит к генерации полностью идентичных исполняемых файлов.

Основные новшества Meson 1.3:

  • В методы проверки компилятора compiler.compiles(), compiler.links() и compiler.run() добавлена опция "werror: true", при которой предупреждения компилятора трактуются как ошибки (можно использовать для проверки, что код собирается без предупреждений).
  • Добавлен метод has_define для проверки определения символа препроцессором.
  • В функцию configure_file() добавлен параметр macro_name, добавляющий макрозащиту двойного подключения через "#include" ("include guards"), оформленную в стиле макросов на языке Си (упрощает создание configure-файлов с динамическими именами макросов).
  • В configure_file() добавлен новый формат вывода - JSON ("output_format: json").
  • В параметры c_std и cpp_std добавлена возможность использования списков значений (например, "default_options: 'c_std=gnu11,c11'").
  • В модулях, использующих CustomTarget для обработки файлов, добавлена возможность кастомизации сообщений, выводимых утилитой ninja.
  • Объявлена устаревшей сборочная цель (build_target) "jar", вместо которой рекомендуется применять вызов "jar()".
  • В метод generator.process() добавлен параметр 'env' для выставления переменной окружения через которую генератор будет обрабатывать ввод.
  • При задании имён целей сборки, связанных с исполняемыми файлами, разрешено указание суффиксов, например "exectuable('foo', 'main.c', name_suffix: 'bar')", для генерации дополнительных исполняемых файлов в том же каталоге.
  • В функцию exectuable() добавлен параметр "vs_module_defs" для использования def-файла, определяющего список функций, передаваемых в shared_module().
  • В функцию find_program() добавлен параметр 'default_options' для задания опций по умолчанию для запасного субпроекта (fallback).
  • Добавлен метод fs.relative_to(), возвращающий относительный путь для первого аргумента, относительно второго, если первый путь существует. Например, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • В функции install_data(), install_headers() и install_subdir() добавлен параметр follow_symlinks, при выставлении которого обеспечивается следование по символическим ссылкам.
  • В метод int.to_string() добавлен параметр "fill" для добавочного заполнения строки начальными нулями. Например, вызов message(n.to_string(fill: 3)) для n=4 сформирует строку "004".
  • Добавлена новая цель clang-tidy-fix, определяющая запуск утилиты clang-tidy с флагом "-fix".
  • В команду compile добавлена возможность указания суффикса (TARGET_SUFFIX) сборочной цели ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]).
  • Добавлена переменная окружения MESON_PACKAGE_CACHE_DIR для переопределения пути к кэшу пакетов (subprojects/packagecache), например, позволяет использовать общий кэш в нескольких проектах.
  • Добавлена команда "meson setup --clearcache" для очистки постоянного кэша.
  • Во все методы проверки компилятора "has_*" добавлена поддержка ключевого слова "required", например вместо "assert(cc.has_function('some_function'))" теперь можно указывать "cc.has_function('some_function', required: true)".
  • В функции shared_library(), static_library(), library() и shared_module() добавлено новое ключевое слово rust_abi, которое следует использовать вместо устаревшего rust_crate_type.


  1. Главная ссылка к новости (https://github.com/mesonbuild/...)
  2. OpenNews: Доступны системы сборки CMake 3.27.0 и Meson 1.2
  3. OpenNews: Проект AlmaLinux представил новую сборочную систему ALBS
  4. OpenNews: Выпуск сборочной системы Meson 1.0
  5. OpenNews: Facebook опубликовал систему сборки Buck2
  6. OpenNews: Android переходит на сборочную систему Bazel
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60148-meson
Ключевые слова: meson, build
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (93) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:24, 20/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Что лучше - мизон или симэйк?
     
     
  • 2.3, Аноним (3), 10:30, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Что лучше - стальная лопата или палка-копалка из каменного века?
     
     
  • 3.4, Аноним (4), 10:44, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    лучше "Ишимура", а не эти ваши лопаты
     
     
  • 4.14, Аноним (3), 12:19, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Не-не-не, без Айзека и 211-V никаких Ишимур!
     
  • 3.16, _kp (ok), 12:22, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Точнее, что лучше надежная проверенная временем "титановая лопата с инкрустацией и позолотой", или китайский экскаватор.
     
     
  • 4.18, Анонин (?), 12:42, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Охохо, это ты про cmake?))
    Щмейк скорее ржавая тупая лопата с подгнившей ручкой.
    Но зато ею может пользоваться любой выпускник трех классов церковно-приходской школы.
    Возможно именно поэтому он так популярен в опенсорсе.
     
     
  • 5.40, Аноним (-), 14:38, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Щмейк скорее ржавая тупая лопата с подгнившей ручкой.

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

     
  • 4.24, Аноним (24), 13:12, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Для рытья траншей экскаватор. Для посадки картошки лопата.
     
  • 4.31, Аноним (31), 13:48, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Титановая лопата - это мечта! Легкая, прочная, не ржавеет, вечная.
     
     
  • 5.38, 1 (??), 14:34, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Хрупкая только - медный пруток не перерубишь.
     
     
  • 6.55, Аноним (55), 17:05, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Помню, пилил в детстве кусок титана ножовкой по металлу и пытался молотком его согнуть.
     
  • 4.35, Аноним (55), 14:23, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В Китае так то миллиард человек живёт. И жильё для них строят как раз те экскаваторы.
     
     
  • 5.52, Аноним (52), 16:52, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Землянки что ли?
     
     
  • 6.54, Аноним (55), 17:04, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Дом никогда не стоил, что ли? Без фундамента его первым торнадо унесёт в страну Оз.
     
  • 6.79, _ (??), 22:15, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В теперешнем Китае "землянки" - это что то-с-чем-то, о такой "землянке" ты можешь только мечтать, лаовэй :)
     
     
  • 7.98, Аноним (-), 03:45, 24/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Помню я как их там на локдаун заперли и они за продукты чуть не рубались друг с ... большой текст свёрнут, показать
     
  • 5.75, Аноним (75), 20:53, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Владение при покупке у них в 70 лет от строительства. Потом у тебя квартиру могут отобрать (ну либо ты можешь доплатить и переехать).
     
     
  • 6.86, Аноним (55), 05:58, 21/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не понял, как китайцы могут отобрать у меня квартиру, и зачем мне доплачивать и переезжать в Китай.
     
  • 2.5, Вирт (?), 10:44, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Если работаете в команде то лучше cmake,
    так как его много кто знает, и есть поддержка практически всего что нужно.

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

     
     
  • 3.7, Аноним (7), 10:48, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну, это только для содомитов.
     
  • 3.19, фнон (?), 12:48, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Ты хотел сказать "Если работаете в команде и ненавидите этих #####! То лучше взять cmake - пусть они мучаются! и те кто после них придет пусть тоже мучаются!" ?

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

     
     
  • 4.46, YetAnotherOnanym (ok), 15:11, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Современный разработчик должем мочь освоить новый инструмент.

    А потом сразу же ещё один. И ещё один. И ещё. И ещё.
    Нефиг время тратить на написание своего кода. Надо современные инструменты осваивать. Один за другим. За каждым новым - следующий, ещё более новый.

     
     
  • 5.50, фнон (?), 16:30, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Если новый инструмент можно освоить, напр за неделю, а потом экономить время и вместо пердоллинга писать код - то отличное решение.
    Более того даже существующий инструмент может развиваться - добавляют новые функции и тд.
    (это конечно не по цмейк)
     
     
  • 6.71, Советский инженер (ok), 20:06, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >Если новый инструмент можно освоить, напр за неделю, а потом экономить время и ...

    ЕСЛИ.

     
  • 2.6, Аноним (7), 10:46, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хуже цмаке быть сложно. Сабж активно набрал популярность, это показательно. Будь всё хорошо, не бежали бы.
     
     
  • 3.42, Аноним (-), 14:51, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Хуже цмаке быть сложно. Сабж активно набрал популярность, это показательно.
    > Будь всё хорошо, не бежали бы.

    Ну-ка расскажи, а кто это с cmake на эту штуку так уж перешел? Переходят обычно покусаные гномом и редхатом, при том с автотулсов. И там еще понятно почему - время configure у этой байды совсем неприличное. Ибо за годы отросло немеряно.

     
  • 3.82, Аноним (82), 23:52, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Сабж активно набрал популярность, это показательно. Будь всё хорошо, не бежали бы.

    Так бегут-то не с CMake, а с Autotools.

     
  • 2.11, Аноним (11), 12:08, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    jam
     
  • 2.13, llolik (ok), 12:18, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    meson проще, cmake фичастей. Выбирай, что больше нравится. meson может прозрачно использовать cmake для сборки подпроектов и разрешения зависимостей.
     
  • 2.29, Аноним (29), 13:32, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Однозначно cmake. У него тулкит богаче. Как ЯП оба говно. CMake говно потому что это в первую очередь шаблонизатор строк, а не ЯП, там даже типов нет, а сделать что-либо - это боль. Meson как ЯП говно потому, что требует питон, но они начали городить свой питоноподобный ЯП вместо использования питона. Чистый NIH-синдром.
     
     
  • 3.63, Аноним (75), 19:04, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем в системе сборки яп полный по Тьюрингу? Там максимум условия нужны.
     
     
  • 4.77, Аноним (77), 21:16, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вы видимо софт не собирали. А я - собирал. На CMake. С анализом системы, где сборка производится, генерацией SDK для Clang из обрывков SDK для Visual Studio и генерацией скриптов для NSIS; То ещё удовольствие. На питоне это быдо бы гораздо удобнее делать - у питона есть нормальный ЯП, пакетный менеджер и куча библиотек: парсеры C++, генераторы C++ из AST, нормальные регулярки, нормальный HTTP, нормальные библиотеки работы с бинарными форматами, нормальные библиотеки для работы с реестром, нормальный интерфейс к git...
     
     
  • 5.80, yet another anonymous (?), 22:41, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Авторы cmake вычисляют зависимости исключительно в меру своего понимания где и что смотреть. Отстроиться от этого нельзя, только обмануть (если получится). Один из результатов этого --- они пялятся на то, что стоит в сборочной системе при кросс-сборке. Со всеми вытекающими из этого...
    Есть и другие "ньюансы", много. Объёмы же современного cmake поражают воображение...
     
     
  • 6.83, Аноним (83), 02:22, 21/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >исключительно в меру своего понимания где и что смотреть

    1. это понимание у них работает, и хорошо работает. Как и понимание специфики конкретных зависисмостей с наличием специфичных настроек.
    2. cmake сама является де-факто стандартом предоставления инфы о зависимостях. если либа собирается с cmake+cpack правильно, то и нужный дистроспецифичный конфиг генерится.
    3. они это делают, в отличие от остальных, которые вообще на всё забили.
    4. даже если нет мшдуля для разыскивания нужной зависимости в системе в стандартной поставке, обычно можно стащить нужный модуль с чьего-либо гитхаба.

     
  • 5.85, all_glory_to_the_hypnotoad (ok), 02:29, 21/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Сейчас открою страшную тайну: можешь всю свою сложную логику вынести в питонячий скрипт и дёргать её из cmake, или из любой другой системы сборки. Всю дичь, которую описываешь, система сборки делать не должна. Задача сборки построить конвейер по твоим вводным и по возможности в декларативном виде, а не разбирать c++ в AST и всасысать в себя кучу императивного кода с хрен пойми чем.
     
     
  • 6.89, Советский инженер (ok), 12:14, 21/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >Сейчас открою страшную тайну

    можно конечно и так.
    но даже в make встроили интерпритатор guile.
    Это говорит о том что все как-то стараються сделать сборочную систему максимально полной (фичастой) , что б как раз то и не приходилось задействовать сторонние тулзы.

     
  • 6.91, Аноним (91), 20:16, 21/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    ... и написать свою систему сборки на питоне. Гениальная идея! Тебе премию Тьюринга ещё за неё не дали?
     
  • 3.64, Аноним (75), 19:10, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Meson как ЯП говно потому, что требует питон, но они начали городить свой питоноподобный ЯП вместо использования питона. Чистый NIH-синдром.

    Есть реализация месона не на питоне.

     
     
  • 4.76, Аноним (76), 21:10, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >Есть реализация месона не на питоне.

    Meson если и брать - то исключительно ради питона. Без питона мезон не нужен. И всё тут.

     
  • 3.65, Аноним (75), 19:11, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Meson как ЯП говно потому, что требует питон,
    > но они начали городить свой питоноподобный ЯП

    То есть как ни крути они не правы?

     
     
  • 4.78, Аноним (78), 21:29, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Нет Проблема в том, что Meson зависит от питона, но скрипты для него не есть пи... большой текст свёрнут, показать
     
  • 2.33, all_glory_to_the_hypnotoad (ok), 14:20, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Оба убогие. Сейчас нет нормальных публичных систем сборок, есть только варианты лучше autotools
     
  • 2.36, Аноним (55), 14:28, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Зачётный троллинг. Даже я знаю, что при использовании GTK будет проще одно, а с Qt - другое.
     
  • 2.57, ZloySergant (ok), 17:17, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Что лучше - мизон или симэйк?

    Обычный gnu make.

     
     
  • 3.94, Аноним (94), 17:07, 23/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    До первого пробела в имени файла.
     
  • 2.62, Аноним (75), 19:02, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Autotools
     
  • 2.84, Аноньимъ (ok), 02:26, 21/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    CARGO
     
     
  • 3.95, Аноним (94), 17:08, 23/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вшивый - о бане.
     
  • 2.92, Ivan_83 (ok), 23:51, 21/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Оба так себе, но всё остальное ещё хуже.


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

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

    У CMake обычно портянки больше и их сложнее читать в силу более громоздкого синтаксиса, тот endif() как пример.
    Но возможно просто Meson не используется в сложных проектах.

     

  • 1.8, pashev.ru (?), 10:51, 20/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > В методы проверки компилятора compiler.compiles(), compiler.links() и compiler.run() добавлена опция "werror: true", при которой предупреждения компилятора трактуются как ошибки (можно использовать для проверки, что код собирается без предупреждений).

    А в автотулз для этого ничего делать не надо. Просто установить переменную окружения CFLAGS.

     
     
  • 2.9, Аноним (7), 11:06, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    CCPFLAGS или CXXFLAGS, пойди угадай что сегодня. Которая из них проыеряла работоспособность компилятора? Автотулс был удобен тем, что тебе не пихали вендорлок, как с месоном (привет гтк с его неотключаемыми в месоне бэкдорами).
     
     
  • 3.10, Аноним (10), 11:59, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Которая из них проыеряла работоспособность компилятора?

    CPPFLAGS - флаги препроцессора, CXXFLAGS - флаги компилятора плюсов. Давайте поможем найти жулику^Wэксперту опеннета флаг для компилятора?

     
     
  • 4.12, Аноним (7), 12:11, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > CPPFLAGS - флаги препроцессора, CXXFLAGS - флаги компилятора плюсов. Давайте поможем найти
    > жулику^Wэксперту опеннета флаг для компилятора?

    Так почему их смешивают постоянно, вместо использования по назначению? Кроме того, это не ответ на вопрос. Я вот часто сталкиваюсь с тем, что линкер обламывается на дефолтных параметрах. Это можно считать неработоспособностью компилятора тоже. А то потом тот же Хромиум на 10 часу компиляции внезапно обламывается.

     
     
  • 5.37, Аноним (55), 14:30, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В 10-м сообщении ведь есть ответ на вопрос. Потому что эксперты не знают, что cpp это не "си плюс плюс", а "си пре процессор".
     
     
  • 6.48, Аноним (7), 16:00, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Но не отвечает на вопрос, что переопределять. Подсказка, помимо этих есть ещё минимум 10 других (и это только известные мне).
     
     
  • 7.56, Аноним (55), 17:12, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Повторюсь - отвечает.
     
     
  • 8.69, Аноним (7), 19:26, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, не отвечает ... текст свёрнут, показать
     
     
  • 9.87, Аноним (55), 06:02, 21/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Кому-то и при виде термина фазы трансляции приходиться лезть в поисковик ... текст свёрнут, показать
     
  • 6.49, фнон (?), 16:20, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Всегда думал что с++ это "С + старые костыли + новые костыли"
    а вот оно как (°ロ°)
     
     
  • 7.58, Аноним (55), 17:23, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    с++ это выражение постинкремент, т.е. результатом его вычисления окажется значение с до увеличения на 1.
     
     
  • 8.59, Аноним (55), 17:26, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Однако плюсы позволяют переопределить operаtor и там написать много страннос... текст свёрнут, показать
     
  • 6.81, yet another anonymous (?), 22:46, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    "Нет такой традиции" (C)

    .cpp используется и для C++ и для препроцессора (для второго, кстати, сильно реже).

     
     
  • 7.88, Аноним (55), 06:06, 21/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Угу, так всегда и было. А потом Страуструп написал свой препроцессор Cfront.
     
  • 5.61, Аноним (10), 18:47, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Примерно так выглядит дефолтное правило make для компиляции C++ сорцов:




    COMPILE.cc = ${CXX} ${CXXFLAGS} ${CPPFLAGS}

    .cc.o:
            ${COMPILE.cc} ${.IMPSRC} -o ${.TARGET}


    На расширения особо смотреть не надо, допускается и cc, и cpp, и cxx. В конечном итоге будет одна команда с набором флагов, и не имеет значения из каких переменных она была составлена.

     
  • 2.26, Аноним (24), 13:16, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Автотулзы - это хтонь и только за их упоминание в положительном ключе надо ставить на учет в ПНД.
     
     
  • 3.43, Аноним (-), 14:54, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Однако в отличие от сабжа оно умеет make-файлы генерить, а не рассказывает что это расово неверно. И поддерживает в цать раз больше разных платформ. А сабж кроме винды, пары линуксов и может макоси если повезет, с полутора компилерами, нихрена и не умеет.

    При том автотулсовый configure по минимуму пошлет на всем чем угодно с posix shell. Даже на vxworks каком. А эта шляпа там вообще не запустится.

     
     
  • 4.47, all_glory_to_the_hypnotoad (ok), 15:56, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > А сабж кроме винды, пары линуксов и может макоси если повезет, с полутора компилерами, нихрена и не умеет.

    Так в мире других ОС и компиляторов больше не существует для >99% софта. И настолько кроссплатформенный софт давно уже массово не пишут и твои эти 'в цать раз больше' платформ мало кто успел потрогать за жизнь. Формально можешь завернуть сборку в autotools и сказать что теперь у тебя ПО доступно для всего, но по факту то оно будет работать только там, где ты лично его смог отладить.

     
  • 4.66, Аноним (75), 19:13, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ты ещё забыл, что просто для сборки проекта autotools не нужны, достаточно баша.
     
     
  • 5.67, Аноним (75), 19:16, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Всмысле что если проект использует autotools и сгенерированным configure , то для сборки нужен только баш
     
     
  • 6.72, Советский инженер (ok), 20:17, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Всмысле что ... нужен только баш

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

     
  • 2.39, Аноним (55), 14:37, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А "можно использовать для проверки, что код собирается без предупреждений" делается тривиальным вызовом grep, или как-то ещё проще?
     
     
  • 3.41, Аноним (55), 14:38, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Кажись, дошло. Они флаг к компилятору устаналивают, а не разбирают вывод.
     

  • 1.15, Аноним (15), 12:21, 20/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Не понял как программа на python работает быстрее программы на плюсах?
     
     
  • 2.17, _kp (ok), 12:29, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Не понял как программа на python работает быстрее программы на плюсах?

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

     
     
  • 3.21, uis (??), 12:59, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Но если компиляторы одни, а издержки <E, то каким образом оно быстрее
     
     
  • 4.25, Аноним (25), 13:13, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Логика круче у meson значит.
     
  • 4.51, Аноним (51), 16:50, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Учи временная сложность алгоритма.
     
  • 3.27, Аноним (24), 13:18, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Никак нет. Можно написать так, что компиллятор не развернет в оптимальные инструкции. Особенно на плюсах.
     
  • 2.28, Советский инженер (ok), 13:27, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >Не понял как программа на python работает быстрее программы на плюсах?

    а я не понял в связи с чем у тебя возник этот вопрос?
    можно цитату из новости?

     
  • 2.32, llolik (ok), 14:17, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Более лёгкий для разбора синтаксис (соответственно, более простой анализатор), более простой генеротор кода сборки (изначально под ninja заточенный), более простая логика разрешения зависимостей (pkg-config-ом/компилятором).

    Так что выбор языка тут играет не так сильно, как логика работы.

     
  • 2.44, Аноним (-), 14:55, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Не понял как программа на python работает быстрее программы на плюсах?

    Вообще есть и вариант этого на сях - muon называется.

     

  • 1.20, uis (??), 12:57, 20/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Чем лучше CMake?
     
     
  • 2.22, фнон (?), 13:02, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    все что угодно лучше чем цмейк
    чего только стоит отвратительный синтаксис вида
    set(x, "value_1;value_2;value_3")
     
     
  • 3.45, all_glory_to_the_hypnotoad (ok), 15:06, 20/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Питонячий вариант ['value_1', 'value_2', ''value_3'] не лучше, а в CMake можно сделать просто как (... value_1 value_2 value_3). И тут же проблема не в синтаксисе, а что CMake вариант резервирует часть символов и кучу слов как кейворды из-за чего их нельзя использовать где-либо в значениях. Но, правда, на практике такие коллизии почти не встречаются.
     

  • 1.34, Cradle (?), 14:23, 20/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    да, интересно, можно на сабже делать embedded проект с несколькими кроссплатформенными таргетами, чтобы у каждого свой тулчейн? Если кто подскажет по делу, викину cmake на помойку
     
  • 1.68, Аноним (75), 19:19, 20/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Для cmake есть Conan
     
     
  • 2.96, Аноним (96), 03:14, 24/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А в meson три способа указать внешнюю зависимость, скачать и установить.
    Зачем вам этот Conan?
     

  • 1.90, Аноним (90), 15:22, 21/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Automake к датам файлов докапывается: сбросил дату у файлов, чтобы отследить что установилось, а он отказываеься собирать. Meson не жалуется и не останавливается.
     
  • 1.93, Аноним (93), 11:58, 23/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Старый добрый premake никогда не подводил. Можно добавлять генераторы без перекомпиляции. Можно отключать генераторы которые не поддерживаешь. Короче сказка.
     
     
  • 2.99, an2 (?), 04:49, 24/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    На гитхабе что-то только беты. 4.4-beta уже 12 лет. 5.0-beta.
     

  • 1.97, Аноним (96), 03:15, 24/11/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Переписать на С собираеться автор или также помрет как что-то там на Perl-е написанное...
     
     
  • 2.100, an2 (?), 04:52, 24/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    muon

    Хоть и не автор переписал. Но даже в стабильном Дебиане уже есть:

    > muon is an implementation of the Meson build system in c99 with minimal dependencies.

    https://packages.debian.org/bookworm/muon-meson
    https://sr.ht/~lattis/muon/

     
  • 2.101, Аноним (-), 05:59, 24/11/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Переписать на С собираеться автор или также помрет как что-то там на
    > Perl-е написанное...

    Хрен знает, но авторы muon именно это и сделали. Вообще не спрашивая никого - просто взяли и запилили парсер этого же яп на сях. Потому что могут.

    Если что пакет в дебиан-убунтуобразных называется muon-meson. Самое приятное что с питонятиной может случиться это ее переписывание =)

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру