Meson membangun rilis sistem 1.3

Rilis sistem build Meson 1.3.0 telah dipublikasikan, yang digunakan untuk membangun proyek seperti X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME dan GTK. Kode Meson ditulis dengan Python dan dilisensikan di bawah lisensi Apache 2.0.

Tujuan utama pengembangan Meson adalah menyediakan proses perakitan berkecepatan tinggi yang dipadukan dengan kenyamanan dan kemudahan penggunaan. Alih-alih membuat, build menggunakan toolkit Ninja secara default, tetapi backend lain seperti xcode dan VisualStudio juga dapat digunakan. Sistem ini memiliki penangan ketergantungan multi-platform bawaan yang memungkinkan Anda menggunakan Meson untuk membangun paket untuk distribusi. Aturan perakitan diatur dalam bahasa khusus domain yang disederhanakan, dapat dibaca dengan baik dan dimengerti oleh pengguna (menurut ide penulis, pengembang harus menghabiskan waktu minimum untuk menulis aturan).

Kompilasi silang dan pembangunan di Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS dan Windows menggunakan GCC, Dentang, Visual Studio dan kompiler lainnya didukung. Dimungkinkan untuk membangun proyek dalam berbagai bahasa pemrograman, termasuk C, C++, Fortran, Java, dan Rust. Mode build inkremental didukung, di mana hanya komponen yang terkait langsung dengan perubahan yang dibuat sejak build terakhir yang dibuat ulang. Meson dapat digunakan untuk menghasilkan build berulang, di mana menjalankan build di lingkungan yang berbeda menghasilkan executable yang sepenuhnya identik.

Inovasi utama Meson 1.3:

  • Menambahkan opsi “werror: true” ke metode pemeriksaan compiler compiler.compiles(), compiler.links() dan compiler.run(), yang memperlakukan peringatan compiler sebagai kesalahan (dapat digunakan untuk memeriksa apakah kode dibuat tanpa peringatan ).
  • Menambahkan metode has_define untuk memeriksa definisi simbol berdasarkan praprosesor.
  • Parameter macro_name telah ditambahkan ke fungsi konfigurasi_file(), menambahkan perlindungan makro untuk koneksi ganda melalui “#include” (“termasuk penjaga”), dirancang dengan gaya makro dalam bahasa C (menyederhanakan pembuatan file konfigurasi dengan dinamis nama makro).
  • Format keluaran baru telah ditambahkan ke konfigurasi_file() - JSON ("output_format: json").
  • Menambahkan kemampuan untuk menggunakan daftar nilai ke parameter c_std dan cpp_std (misalnya, “default_options: 'c_std=gnu11,c11′’).
  • Dalam modul yang menggunakan CustomTarget untuk memproses file, kemampuan untuk menyesuaikan keluaran pesan oleh utilitas ninja telah ditambahkan.
  • Build_target "jar" sudah tidak digunakan lagi dan panggilan "jar()" direkomendasikan sebagai gantinya.
  • Parameter 'env' telah ditambahkan ke metode generator.process() untuk mengatur variabel lingkungan yang akan digunakan generator untuk memproses input.
  • Saat menentukan nama target build yang terkait dengan executable, sufiks seperti "executable('foo', 'main.c', name_suffix: 'bar')" diperbolehkan untuk menghasilkan executable tambahan di direktori yang sama.
  • Menambahkan parameter “vs_module_defs” ke fungsi exectuable() untuk menggunakan file def yang mendefinisikan daftar fungsi yang diteruskan ke shared_module().
  • Menambahkan parameter 'default_options' ke fungsi find_program() untuk mengatur opsi default untuk subproyek fallback.
  • Menambahkan metode fs.relative_to(), yang mengembalikan jalur relatif untuk argumen pertama, relatif terhadap argumen kedua, jika jalur pertama ada. Misalnya, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Parameter following_symlinks telah ditambahkan ke fungsi install_data(), install_headers() dan install_subdir(); bila disetel, tautan simbolis akan diikuti.
  • Parameter “isi” telah ditambahkan ke metode int.to_string() untuk mengisi string dengan angka nol di depan secara bertahap. Misalnya, memanggil message(n.to_string(fill: 3)) untuk n=4 akan menghasilkan string "004".
  • Menambahkan target baru, clang-tidy-fix, yang menetapkan menjalankan utilitas clang-tidy dengan tanda "-fix".
  • Kemampuan untuk menentukan akhiran (TARGET_SUFFIX) dari target perakitan ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) telah ditambahkan ke perintah kompilasi.
  • Menambahkan variabel lingkungan MESON_PACKAGE_CACHE_DIR untuk mengganti jalur ke cache paket (subproyek/packagecache), misalnya, memungkinkan Anda menggunakan cache bersama di beberapa proyek.
  • Menambahkan perintah "meson setup --clearcache" untuk menghapus cache persisten.
  • Dukungan untuk kata kunci “wajib” telah ditambahkan ke semua metode pemeriksaan kompiler “has_*”, misalnya, alih-alih “assert(cc.has_function('some_function'))” Anda sekarang dapat menentukan “cc.has_function('some_function' , wajib: benar)”.
  • Kata kunci baru, Rust_abi, telah ditambahkan ke fungsi shared_library(), static_library(), Library(), dan shared_module(), yang seharusnya digunakan sebagai ganti dari Rust_crate_type yang sudah tidak digunakan lagi.

Sumber: opennet.ru

Tambah komentar