Meson 1.3 montaj sisteminin buraxılışı

X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME və GTK kimi layihələrin qurulması üçün istifadə edilən Meson 1.3.0 qurma sisteminin buraxılışı nəşr olundu. Meson kodu Python-da yazılmışdır və Apache 2.0 lisenziyası altında lisenziyalıdır.

Meson-un əsas inkişaf məqsədi rahatlıq və istifadə rahatlığı ilə birlikdə yüksək sürətli montaj prosesini təmin etməkdir. Yaratmaq əvəzinə, quruluş standart olaraq Ninja alət dəstindən istifadə edir, lakin xcode və VisualStudio kimi digər arxa hissələrdən də istifadə edilə bilər. Sistem, paylamalar üçün paketlər yaratmaq üçün Meson-dan istifadə etməyə imkan verən daxili çox platformalı asılılıq işləyicisinə malikdir. Montaj qaydaları sadələşdirilmiş domenə xas dildə qurulur, onlar yaxşı oxunaqlıdır və istifadəçi üçün başa düşüləndir (müəlliflərin fikrinə görə, tərtibatçı qaydaların yazılmasına minimum vaxt sərf etməlidir).

GCC, Clang, Visual Studio və digər kompilyatorlardan istifadə edərək Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS və Windows üzərində çarpaz tərtib və tikinti dəstəklənir. C, C++, Fortran, Java və Rust daxil olmaqla müxtəlif proqramlaşdırma dillərində layihələr qurmaq mümkündür. Yalnız sonuncu qurmadan sonra edilən dəyişikliklərlə birbaşa əlaqəli olan komponentlərin yenidən qurulduğu artımlı qurma rejimi dəstəklənir. Meson təkrarlanan quruluşlar yaratmaq üçün istifadə edilə bilər, burada quruluşun müxtəlif mühitlərdə işlədilməsi tamamilə eyni icra edilə bilənlərlə nəticələnir.

Meson 1.3-ın əsas yenilikləri:

  • Kompilyator xəbərdarlığını xəta kimi qəbul edən compiler.compiles(), compiler.links() və compiler.run() metodlarına “səhv: doğru” seçimi əlavə edildi (kodun xəbərdarlıqlar olmadan qurulduğunu yoxlamaq üçün istifadə edilə bilər) ).
  • Preprocessor tərəfindən simvolun tərifini yoxlamaq üçün has_define metodu əlavə edildi.
  • makro_adı parametri configure_file() funksiyasına əlavə edilib, C dilində makro üslubunda işlənmiş (dinamik parametrlərlə konfiqurasiya fayllarının yaradılmasını sadələşdirən) “#include” (“mühafizəçiləri daxil et”) vasitəsilə ikiqat əlaqə üçün makro mühafizə əlavə edilib. makro adları).
  • configure_file() - JSON ("output_format: json") faylına yeni çıxış formatı əlavə edildi.
  • C_std və cpp_std parametrlərinə dəyər siyahılarından istifadə etmək imkanı əlavə edildi (məsələn, “default_options: 'c_std=gnu11,c11′').
  • Faylları emal etmək üçün CustomTarget-dən istifadə edən modullarda ninja yardım proqramı tərəfindən mesajların çıxışını fərdiləşdirmək imkanı əlavə edilmişdir.
  • build_target "jar" köhnəldi və əvəzinə "jar()" çağırışı tövsiyə olunur.
  • Generatorun girişi emal edəcəyi mühit dəyişənini təyin etmək üçün generator.process() metoduna 'env' parametri əlavə edilmişdir.
  • İcra edilə bilənlərlə əlaqəli qurma hədəfi adlarını təyin edərkən, "executable('foo', 'main.c', name_suffix: 'bar')" kimi şəkilçilərə eyni kataloqda əlavə icra olunanlar yaratmaq üçün icazə verilir.
  • Shared_module()-ə ötürülən funksiyaların siyahısını müəyyən edən def faylından istifadə etmək üçün icra edilə bilən() funksiyasına “vs_module_defs” parametri əlavə edildi.
  • Yedek alt layihə üçün defolt seçimləri təyin etmək üçün find_program() funksiyasına 'default_options' parametri əlavə edildi.
  • Əgər birinci yol varsa, ikinciyə nisbətən birinci arqument üçün nisbi yolu qaytaran fs.relative_to() metodu əlavə edildi. Məsələn, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Aşağıdakı_symlinks parametri install_data(), install_headers() və install_subdir() funksiyalarına əlavə edilmişdir; qurulduqda simvolik keçidlər izlənilir.
  • Sətri tədricən baş sıfırlarla doldurmaq üçün int.to_string() metoduna “doldurma” parametri əlavə edilmişdir. Məsələn, n=3 üçün message(n.to_string(fill: 4)) çağırılması "004" sətrini yaradacaq.
  • "-fix" bayrağı ilə clang-səliqəli yardım proqramının işləməsini təyin edən yeni hədəf, clang-tidy-fix əlavə edildi.
  • Montaj hədəfinin ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) şəkilçisini (TARGET_SUFFIX) təyin etmək imkanı tərtib əmrinə əlavə edilmişdir.
  • Paket keşinə (alt layihələr/paket önbelleğine) gedən yolu ləğv etmək üçün MESON_PACKAGE_CACHE_DIR mühit dəyişəni əlavə edildi, məsələn, bir neçə layihədə paylaşılan keşdən istifadə etməyə imkan verir.
  • Davamlı keşi təmizləmək üçün "meson setup --clearcache" əmri əlavə edildi.
  • “Tələb olunan” açar söz üçün dəstək bütün “has_*” kompilyator yoxlama metodlarına əlavə edilmişdir, məsələn, “assert(cc.has_function('some_function'))” əvəzinə siz indi “cc.has_function('some_function') təyin edə bilərsiniz. , tələb olunur: doğru)”.
  • Paylaşılan_library(), static_library(), library() və shared_module() funksiyalarına yeni açar söz rust_abi əlavə edilib və köhnəlmiş rust_crate_type əvəzinə istifadə edilməlidir.

Mənbə: opennet.ru

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