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 қолданбасын пайдалануға мүмкіндік беретін кірістірілген көп платформалы тәуелділік өңдегіші бар. Құрастыру ережелері жеңілдетілген доменге тән тілде орнатылған, олар жақсы оқылатын және пайдаланушыға түсінікті (авторлардың идеясына сәйкес әзірлеуші ​​ережелерді жазуға аз уақыт жұмсауы керек).

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() компиляторды тексеру әдістеріне “қате қате: шын” опциясы қосылды (код ескертусіз салынғанын тексеру үшін пайдаланылуы мүмкін). ).
  • Алдын ала өңдеуші арқылы таңба анықтамасын тексеру үшін has_define әдісі қосылды.
  • Macro_name параметрі configure_file() функциясына қосылды, ол C тіліндегі макростар стилінде жасалған (динамикалық параметрлері бар конфигурация файлдарын жасауды жеңілдету) «#include» («қорғаушыларды қосу») арқылы қос қосылымдарға макрос қорғауды қосады. макрос атаулары).
  • configure_file() - JSON («output_format: json») файлына жаңа шығыс пішімі қосылды.
  • c_std және cpp_std параметрлеріне мәндер тізімін пайдалану мүмкіндігі қосылды (мысалы, «әдепкі_опциялар: 'c_std=gnu11,c11′').
  • Файлдарды өңдеу үшін CustomTarget пайдаланатын модульдерде ниндзя утилитасы шығаратын хабарларды теңшеу мүмкіндігі қосылды.
  • build_target "jar" ескірген және оның орнына "jar()" шақыруы ұсынылады.
  • 'env' параметрі генератор енгізуді өңдейтін орта айнымалы мәнін орнату үшін generator.process() әдісіне қосылды.
  • Орындалатын файлдармен байланысты құрастыру мақсатты атауларын көрсеткенде, "орындалатын('foo', 'main.c', name_suffix: 'bar')" сияқты жұрнақтар бір каталогта қосымша орындалатын файлдарды жасау үшін рұқсат етіледі.
  • Shared_module() параметріне жіберілген функциялар тізімін анықтайтын def файлын пайдалану үшін exectuable() функциясына “vs_module_defs” параметрі қосылды.
  • Қосымша қосалқы жоба үшін әдепкі опцияларды орнату үшін find_program() функциясына "default_options" параметрі қосылды.
  • Бірінші жол бар болса, екіншіге қатысты бірінші аргументтің салыстырмалы жолын қайтаратын fs.relative_to() әдісі қосылды. Мысалы, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Install_data(), install_headers() және install_subdir() функцияларына келесі_symlinks параметрі қосылды; орнатылған кезде символдық сілтемелер орындалады.
  • Жолды алдыңғы нөлдермен қадаммен толтыру үшін int.to_string() әдісіне «толтыру» параметрі қосылды. Мысалы, n=3 үшін message(n.to_string(fill: 4)) шақыру "004" жолын жасайды.
  • Жаңа мақсат қосылды, clang-tidy-fix, ол clang-tidy қызметтік бағдарламасын "-fix" жалаушасымен іске қосуды көрсетеді.
  • Жинау мақсатының ([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 орнына қолданылуы керек.

Ақпарат көзі: opennet.ru

пікір қалдыру