Meson build համակարգի թողարկում 1.3

Հրապարակվել է Meson 1.3.0 build համակարգի թողարկումը, որն օգտագործվում է այնպիսի նախագծերի կառուցման համար, ինչպիսիք են X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME և GTK: Meson կոդը գրված է Python-ով և լիցենզավորված է Apache 2.0 լիցենզիայի ներքո:

Meson-ի զարգացման հիմնական նպատակն է ապահովել բարձր արագությամբ հավաքման գործընթաց՝ զուգորդված հարմարավետության և օգտագործման հարմարավետության հետ: Make-ի փոխարեն, build-ը լռելյայն օգտագործում է Ninja գործիքակազմը, սակայն կարող են օգտագործվել նաև այլ backends, ինչպիսիք են xcode-ը և VisualStudio-ն: Համակարգն ունի ներկառուցված բազմահարթակ կախվածության կարգավորիչ, որը թույլ է տալիս օգտագործել Meson՝ բաշխումների համար փաթեթներ ստեղծելու համար: Ասամբլեայի կանոնները սահմանվում են պարզեցված տիրույթին հատուկ լեզվով, դրանք լավ ընթեռնելի և հասկանալի են օգտագործողի համար (ըստ հեղինակների մտահղացման, մշակողը պետք է նվազագույն ժամանակ հատկացնի կանոններ գրելու համար):

Աջակցում է խաչաձև կոմպիլյացիա և կառուցում Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS և Windows-ի վրա՝ օգտագործելով GCC, Clang, Visual Studio և այլ կոմպիլյատորներ: Հնարավոր է նախագծեր կառուցել տարբեր ծրագրավորման լեզուներով, այդ թվում՝ C, C++, Fortran, Java և Rust: Աջակցվում է հավելյալ կառուցման ռեժիմ, որում վերակառուցվում են միայն այն բաղադրիչները, որոնք ուղղակիորեն կապված են վերջին կառուցումից հետո կատարված փոփոխությունների հետ: Meson-ը կարող է օգտագործվել կրկնվող կառուցումներ ստեղծելու համար, որտեղ build-ի գործարկումը տարբեր միջավայրերում հանգեցնում է բոլորովին նույնական գործարկվողների ստեղծմանը:

Meson 1.3-ի հիմնական նորամուծությունները.

  • Կոմպիլյատորների ստուգման մեթոդներին 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() մեթոդին՝ սահմանելու շրջակա միջավայրի փոփոխականը, որի միջոցով գեներատորը կմշակի մուտքային տվյալները:
  • Գործադիրների հետ կապված կառուցման թիրախների անունները նշելիս «գործարկվող («foo», «main.c», name_suffix: «bar»)» վերջածանցները թույլատրվում են ստեղծել լրացուցիչ գործադիրներ նույն գրացուցակում:
  • Exectuable() ֆունկցիային ավելացրել է “vs_module_defs” պարամետրը՝ օգտագործելու def ֆայլ, որը սահմանում է shared_module(-ին փոխանցված գործառույթների ցանկը):
  • Find_program() ֆունկցիային ավելացվել է «default_options» պարամետրը՝ հետադարձ ենթանախագծի համար լռելյայն ընտրանքներ սահմանելու համար:
  • Ավելացվեց fs.relative_to() մեթոդը, որը վերադարձնում է առաջին արգումենտի հարաբերական ուղին երկրորդի համեմատ, եթե առաջին ուղին գոյություն ունի: Օրինակ՝ «fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')»:
  • Ստորև բերված_symlinks պարամետրը ավելացվել է install_data(), install_headers() և install_subdir() ֆունկցիաներին, երբ սահմանված է, հետևում են խորհրդանշական հղումներին:
  • «fill» պարամետրն ավելացվել է int.to_string() մեթոդին՝ տողը սկզբնական զրոներով աստիճանաբար լրացնելու համար: Օրինակ, n=3-ի համար հաղորդագրություն (n.to_string(fill: 4)) կանչելը կստեղծի «004» տողը:
  • Ավելացվեց նոր թիրախ՝ clang-tidy-fix, որը սահմանում է «-fix» դրոշով գործարկել «clang-tidy» ծրագիրը:
  • Կազմելու հրամանին ավելացվել է հավաքման թիրախի ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) վերջածանցը (TARGET_SUFFIX) նշելու հնարավորությունը:
  • Ավելացվել է MESON_PACKAGE_CACHE_DIR միջավայրի փոփոխական՝ փաթեթների քեշի ուղին (ենթանախագծեր/փաթեթաքեշ) շրջելու համար, օրինակ՝ թույլ տալով օգտագործել ընդհանուր քեշը մի քանի նախագծերում:
  • Ավելացվեց «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-ի փոխարեն:

Source: opennet.ru

Добавить комментарий