Нашри системаи сохтани Meson 1.3

Нашри системаи сохтани Meson 1.3.0 нашр шуд, ки барои сохтани лоиҳаҳо ба монанди X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME ва GTK истифода мешавад. Рамзи Meson дар Python навишта шудааст ва тибқи иҷозатномаи Apache 2.0 иҷозатнома дорад.

Ҳадафи асосии рушди Meson таъмини раванди тези васлкунӣ дар якҷоягӣ бо роҳат ва осонии истифода мебошад. Ба ҷои сохтан, сохтан ба таври нобаёнӣ асбоби Ninja -ро истифода мебарад, аммо дигар пуштибонҳо ба монанди xcode ва VisualStudio низ метавонанд истифода шаванд. Система дорои коркарди вобастагии бисёрплатформаи дарунсохт мебошад, ки ба шумо имкон медиҳад Meson-ро барои сохтани бастаҳо барои тақсимот истифода баред. Қоидаҳои ассамблея бо забони соддакардашудаи мушаххаси домен муқаррар карда шудаанд, онҳо барои корбар хуб хондан ва фаҳмо мебошанд (мувофиқи идеяи муаллифон, таҳиякунанда бояд ҳадди аққал вақти навиштани қоидаҳои навиштанро сарф кунад).

Crosscompilyasiya ва сохтан дар Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS ва Windows бо истифода аз GCC, Clang, Visual Studio ва дигар компиляторҳо дастгирӣ карда мешавад. Лоиҳаҳоро бо забонҳои гуногуни барномасозӣ, аз ҷумла C, C++, Fortran, Java ва Rust сохтан мумкин аст. Реҷаи афзояндаи сохтмон дастгирӣ карда мешавад, ки дар он танҳо ҷузъҳое, ки мустақиман бо тағирот аз замони охирин сохташуда алоқаманданд, аз нав сохта мешаванд. Месонро барои тавлиди сохторҳои такроршаванда истифода бурдан мумкин аст, ки дар он ҷо кор кардани сохтмон дар муҳитҳои гуногун боиси иҷрошавандаҳои комилан якхела мегардад.

Навовариҳои асосии Meson 1.3:

  • Ба усулҳои тафтиши compiler compiler.compiles(), compiler.links() ва compiler.run(), варианти "верор: ҳақиқӣ" илова карда шуд, ки огоҳиҳои компиляторро ҳамчун хато ҳисоб мекунад (метавонад барои тафтиш кардани он, ки код бидуни огоҳӣ сохта шудааст, истифода шавад) ).
  • Усули has_define барои тафтиши таърифи рамз аз ҷониби протсессори пешакӣ иловашуда.
  • Параметри macro_name ба функсияи configure_file() илова карда шуд, ки бо илова кардани муҳофизати макро барои пайвастҳои дукарата тавассути "#include" ("include guards"), ки бо услуби макросҳо дар забони C тарҳрезӣ шудааст (содда сохтани файлҳои конфигуратсия бо динамикӣ). номҳои макрос).
  • Формати нави баромад ба configure_file() - JSON ("output_format: json") илова карда шуд.
  • Имконияти истифодаи рӯйхати арзишҳо ба параметрҳои c_std ва cpp_std илова карда шуд (масалан, "default_options: 'c_std=gnu11,c11'').
  • Дар модулҳое, ки CustomTarget-ро барои коркарди файлҳо истифода мебаранд, қобилияти танзим кардани паёмҳои баромади утилитаи ninja илова карда шудааст.
  • build_target "jar" бекор карда шудааст ва ба ҷои он занги "jar()" тавсия мешавад.
  • Параметри 'env' ба усули generator.process() барои муқаррар кардани тағирёбандаи муҳити зист, ки тавассути он генератор воридотро коркард мекунад, илова карда шудааст.
  • Ҳангоми муайян кардани номҳои ҳадафи сохтмон, ки бо файлҳои иҷрошаванда алоқаманданд, суффиксҳо ба монанди "executable('foo', 'main.c', name_suffix: 'bar')" иҷозат дода мешаванд, ки файлҳои иҷрошавандаи иловагиро дар як директория тавлид кунанд.
  • Параметри "vs_module_defs" -ро ба функсияи иҷрошаванда () барои истифодаи файли def, ки рӯйхати функсияҳои ба shared_module () интиқолшударо муайян мекунад, илова кард.
  • Параметри 'default_options' ба функсияи find_program() илова карда шуд, то имконоти пешфарз барои зерлоиҳаи бозпас гузошта шавад.
  • Иловаи fs.relative_to() усули, ки роҳи нисбии далели аввалро нисбат ба дуюм бармегардонад, агар роҳи аввал мавҷуд бошад. Масалан, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Параметри зерини_symlinks ба функсияҳои install_data(), install_headers() ва install_subdir() илова карда шудааст; ҳангоми насб, истинодҳои рамзӣ пайгирӣ мешаванд.
  • Параметри "пур" ба усули int.to_string() илова карда шудааст, то сатрро бо сифрҳои пешбар тадриҷан пур кунад. Масалан, занг задан ба паём(n.to_string(fill: 3)) барои n=4 сатри "004"-ро тавлид мекунад.
  • Ҳадафи нав илова карда шуд, clang-tidy-fix, ки иҷрои утилитаи clang-tidy-ро бо парчами "-fix" муайян мекунад.
  • Имконияти муайян кардани суффикси (TARGET_SUFFIX) ҳадафи ҷамъбаст ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) ба фармони тартибдиҳӣ илова карда шудааст.
  • Тағйирёбандаи муҳити зисти MESON_PACKAGE_CACHE_DIR илова карда шуд, то ки роҳ ба кеши бастаро бекор кунад (зер лоиҳаҳо/packagecache), масалан, ба шумо имкон медиҳад, ки кэши муштаракро дар якчанд лоиҳа истифода баред.
  • Барои тоза кардани кэши доимӣ фармони "meson setup --clearcache" илова карда шуд.
  • Дастгирии калимаи калидии "талаб" ба ҳама усулҳои санҷиши компилятор "has_*" илова карда шудааст, масалан, ба ҷои "assert(cc.has_function('some_function'))" шумо акнун метавонед "cc.has_function('some_function')-ро муайян кунед. , талаб карда мешавад: дуруст)».
  • Калимаи нави калидӣ, rust_abi, ба функсияҳои shared_library(), static_library(), library() ва shared_module() илова карда шуд, ки бояд ба ҷои rust_crate_type бекоршуда истифода шавад.

Манбаъ: opennet.ru

Илова Эзоҳ