Meson qurish tizimining 1.3 versiyasi

Meson 1.3.0 qurish tizimi chiqarildi, u X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME va GTK kabi loyihalarni yaratish uchun ishlatiladi. Meson kodi Python-da yozilgan va Apache 2.0 litsenziyasi ostida litsenziyalangan.

Mesonni ishlab chiqishning asosiy maqsadi qulaylik va foydalanish qulayligi bilan birgalikda yig'ish jarayonining yuqori tezligini ta'minlashdir. Qurilishda make yordam dasturi o'rniga Ninja asboblar to'plami sukut bo'yicha ishlatiladi, ammo xcode va VisualStudio kabi boshqa backendlardan ham foydalanish mumkin. Tizimda o'rnatilgan ko'p platformali qaramlik ishlovchisi mavjud bo'lib, u Meson-dan tarqatish uchun paketlar yaratish uchun foydalanish imkonini beradi. Yig'ish qoidalari soddalashtirilgan domenga xos tilda ko'rsatilgan, foydalanuvchi uchun juda o'qilishi mumkin va tushunarli (mualliflar nazarda tutganidek, ishlab chiquvchi qoidalarni yozish uchun minimal vaqt sarflashi kerak).

GCC, Clang, Visual Studio va boshqa kompilyatorlar yordamida Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS va Windows tizimlarida oʻzaro kompilyatsiya va qurishni qoʻllab-quvvatlaydi. C, C++, Fortran, Java va Rust kabi turli xil dasturlash tillarida loyihalar yaratish mumkin. Qo'shimcha qurish rejimi qo'llab-quvvatlanadi, unda faqat oxirgi tuzilishdan keyin kiritilgan o'zgarishlarga bevosita bog'liq bo'lgan komponentlar qayta tiklanadi. Meson takrorlanadigan tuzilmalarni yaratish uchun ishlatilishi mumkin, bunda qurilishni turli muhitlarda ishga tushirish butunlay bir xil bajariladigan fayllarni yaratishga olib keladi.

Meson 1.3 ning asosiy yangiliklari:

  • Compiler.compiles(), compiler.links() va compiler.run() kompilyatorni tekshirish usullariga “Worror: true” opsiyasi qo‘shildi, bu kompilyator ogohlantirishlarini xato deb hisoblaydi (kod ogohlantirishlarsiz tuzilganligini tekshirish uchun ishlatilishi mumkin) ).
  • Preprotsessor tomonidan belgi ta'rifini tekshirish uchun has_define usuli qo'shildi.
  • Macro_name parametri configure_file() funksiyasiga qoʻshildi, C tilidagi makroslar uslubida yaratilgan “#include” (“qoʻriqchilarni oʻz ichiga oladi”) orqali qoʻsh ulanishlar uchun soʻl himoyasi qoʻshildi (dinamik konfiguratsiya fayllarini yaratishni soddalashtiradi). makro nomlari).
  • configure_file() - JSON ("output_format: json") ga yangi chiqish formati qo'shildi.
  • C_std va cpp_std parametrlariga qiymatlar roʻyxatidan foydalanish imkoniyati qoʻshildi (masalan, “default_options: 'c_std=gnu11,c11′').
  • Fayllarni qayta ishlash uchun CustomTarget-dan foydalanadigan modullarda ninja yordam dasturi tomonidan chiqarilgan xabarlarni sozlash imkoniyati qo'shildi.
  • build_target "jar" eskirgan va o'rniga "jar()" chaqiruvi tavsiya etiladi.
  • "env" parametri generator.process() usuliga generator kiritilgan ma'lumotlarni qayta ishlaydigan muhit o'zgaruvchisini o'rnatish uchun qo'shilgan.
  • Bajariladigan fayllar bilan bog'langan qurilish maqsadli nomlarini belgilashda "executable('foo', 'main.c', name_suffix: 'bar')" kabi qo'shimchalarga bir xil katalogda qo'shimcha bajariladigan fayllarni yaratishga ruxsat beriladi.
  • Shared_module() ga uzatilgan funksiyalar roʻyxatini belgilaydigan def faylidan foydalanish uchun exectuable() funksiyasiga “vs_module_defs” parametri qoʻshildi.
  • Qo'shimcha kichik loyiha uchun standart variantlarni o'rnatish uchun find_program() funksiyasiga "default_options" parametri qo'shildi.
  • Qo'shilgan fs.relative_to() usuli, agar birinchi yo'l mavjud bo'lsa, birinchi argument uchun ikkinchisiga nisbatan nisbiy yo'lni qaytaradi. Masalan, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Quyidagi_symlinks parametri install_data(), install_headers() va install_subdir() funksiyalariga qoʻshildi; oʻrnatilganda ramziy havolalar bajariladi.
  • Int.to_string() usuliga satrni bosqichma-bosqich bosh nollar bilan to‘ldirish uchun “to‘ldirish” parametri qo‘shildi. Masalan, n=3 uchun message(n.to_string(fill: 4)) ni chaqirish “004” qatorini hosil qiladi.
  • "-fix" bayrog'i bilan clang-tidy yordam dasturini ishga tushirishni bildiruvchi yangi maqsad, clang-tidy-fix qo'shildi.
  • Kompilyatsiya buyrug'iga montaj maqsadining ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) qo'shimchasini (TARGET_SUFFIX) belgilash imkoniyati qo'shildi.
  • MESON_PACKAGE_CACHE_DIR muhit oʻzgaruvchisi paket keshiga (subprojects/packagecache) yoʻlni bekor qilish uchun qoʻshildi, masalan, bir nechta loyihalarda umumiy keshdan foydalanish imkonini beradi.
  • Doimiy keshni tozalash uchun "meson setup --clearcache" buyrug'i qo'shildi.
  • “kerakli” kalit so‘zni qo‘llab-quvvatlash barcha “has_*” kompilyatorni tekshirish usullariga qo‘shildi, masalan, “assert(cc.has_function('some_function'))” o‘rniga endi “cc.has_function('some_function') belgilashingiz mumkin. , talab qilinadi: rost)”.
  • Rust_abi yangi kalit so'zi shared_library(), static_library(), library() va shared_module() funksiyalariga qo'shildi, ular eskirgan rust_crate_type o'rniga ishlatilishi kerak.

Manba: opennet.ru

a Izoh qo'shish