Meson derleme sistemi sürümü 1.3

X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME ve GTK gibi projelerin oluşturulmasında kullanılan Meson 1.3.0 build sisteminin sürümü yayınlandı. Meson'un kodu Python'da yazılmıştır ve Apache 2.0 lisansı altında lisanslanmıştır.

Meson'un geliştirilmesinin temel amacı, montaj sürecinde yüksek hız ile birlikte rahatlık ve kullanım kolaylığı sağlamaktır. Oluşturma sırasında make yardımcı programı yerine Ninja araç seti varsayılan olarak kullanılır, ancak xcode ve VisualStudio gibi diğer arka uçlar da kullanılabilir. Sistem, dağıtımlara yönelik paketler oluşturmak için Meson'u kullanmanıza olanak tanıyan yerleşik bir çoklu platform bağımlılık işleyicisine sahiptir. Derleme kuralları basitleştirilmiş, alana özgü bir dilde belirtilir, kullanıcı için oldukça okunaklı ve anlaşılırdır (yazarların amaçladığı gibi, geliştiricinin kuralları yazmak için minimum zaman harcaması gerekir).

GCC, Clang, Visual Studio ve diğer derleyicileri kullanarak Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS ve Windows üzerinde çapraz derlemeyi ve derlemeyi destekler. C, C++, Fortran, Java ve Rust dahil olmak üzere çeşitli programlama dillerinde projeler oluşturmak mümkündür. Yalnızca son yapıdan bu yana yapılan değişikliklerle doğrudan ilgili bileşenlerin yeniden oluşturulduğu artımlı yapı modu desteklenir. Meson, yapının farklı ortamlarda çalıştırılmasının tamamen aynı yürütülebilir dosyaların oluşturulmasıyla sonuçlandığı tekrarlanabilir yapılar oluşturmak için kullanılabilir.

Meson 1.3'in ana yenilikleri:

  • Derleyici kontrol yöntemleri compiler.compiles(), compiler.links() ve compiler.run()'a, derleyici uyarılarını hata olarak değerlendiren "werror: true" seçeneği eklendi (kodun uyarılar olmadan oluşturulduğunu kontrol etmek için kullanılabilir) ).
  • Önişlemci tarafından sembol tanımını kontrol etmek için has_define yöntemi eklendi.
  • macro_name parametresi, C dilindeki makroların tarzında tasarlanmış (dinamik komutlarla yapılandırma dosyalarının oluşturulmasını basitleştiren) “#include” (“include guards”) aracılığıyla çift bağlantılar için makro koruması ekleyerek,config_file() işlevine eklenmiştir. makro adları).
  • configure_file() - JSON'a ("output_format: json") yeni bir çıktı formatı eklendi.
  • C_std ve cpp_std parametrelerine değer listelerini kullanma yeteneği eklendi (örneğin, “default_options: 'c_std=gnu11,c11′').
  • Dosyaları işlemek için CustomTarget'ı kullanan modüllere, ninja yardımcı programı tarafından gönderilen mesajları özelleştirme yeteneği eklenmiştir.
  • build_target "jar" kullanımdan kaldırıldı ve bunun yerine "jar()" çağrısı önerilir.
  • Jeneratörün girişi işleyeceği ortam değişkenini ayarlamak için jeneratör.process() yöntemine 'env' parametresi eklendi.
  • Yürütülebilir dosyalar ile ilişkili derleme hedefi adlarını belirtirken, "yürütülebilir dosya('foo', 'main.c', name_suffix: 'bar')" gibi son eklerin aynı dizinde ek yürütülebilir dosyalar oluşturmasına izin verilir.
  • Shared_module()'a iletilen işlevlerin listesini tanımlayan bir def dosyasını kullanmak için exectuable() işlevine "vs_module_defs" parametresi eklendi.
  • Geri dönüş alt projesi için varsayılan seçenekleri ayarlamak amacıyla find_program() işlevine 'default_options' parametresi eklendi.
  • İlk yol mevcutsa ikinciye göre ilk argümanın göreceli yolunu döndüren fs.relative_to() yöntemi eklendi. Örneğin, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • install_data(), install_headers() ve install_subdir() işlevlerine aşağıdaki_symlinks parametresi eklenmiştir; ayarlandığında sembolik bağlantılar takip edilir.
  • Dizeyi baştaki sıfırlarla artımlı olarak doldurmak için int.to_string() yöntemine bir "fill" parametresi eklendi. Örneğin, n=3 için message(n.to_string(fill: 4)) işlevinin çağrılması "004" dizesini üretecektir.
  • Clang-tidy yardımcı programının "-fix" bayrağıyla çalıştırılmasını belirten yeni bir hedef olan clang-tidy-fix eklendi.
  • Derleme komutuna derleme hedefinin ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) sonekini (TARGET_SUFFIX) belirtme yeteneği eklendi.
  • Paket önbelleğinin yolunu (alt projeler/paket önbelleği) geçersiz kılmak için MESON_PACKAGE_CACHE_DIR ortam değişkeni eklendi; örneğin, birkaç projede paylaşılan bir önbellek kullanmanıza olanak tanır.
  • Kalıcı önbelleği temizlemek için "meson setup --clearcache" komutu eklendi.
  • Tüm “has_*” derleyici kontrol yöntemlerine “gerekli” anahtar kelime desteği eklendi, örneğin “assert(cc.has_function('some_function'))” yerine artık “cc.has_function('some_function') belirtebilirsin , gerekli: doğru)”.
  • Kullanımdan kaldırılan Rust_crate_type yerine kullanılması gereken, paylaşılan_library(), static_library(), kitaplık() ve paylaşılan_module() işlevlerine yeni bir Rust_abi anahtar sözcüğü eklendi.

Kaynak: opennet.ru

Yorum ekle