Meson membangun rilis sistem 0.51

diterbitkan rilis sistem build Meson 0.51, yang digunakan untuk membangun proyek seperti X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME dan GTK+. Kode Meson ditulis dengan Python dan disediakan berlisensi di bawah Apache 2.0.

Tujuan utama pengembangan Meson adalah untuk memberikan proses perakitan berkecepatan tinggi yang dikombinasikan dengan kenyamanan dan kemudahan penggunaan. Alih-alih utilitas make, build default menggunakan toolkit Ninja, tetapi backend lain juga dapat digunakan, seperti xcode dan VisualStudio. Sistem ini memiliki pengendali ketergantungan multi-platform bawaan yang memungkinkan Anda menggunakan Meson untuk membangun paket distribusi. Aturan perakitan ditentukan dalam bahasa khusus domain yang disederhanakan, sangat mudah dibaca dan dipahami oleh pengguna (seperti yang dimaksudkan oleh penulis, pengembang harus menghabiskan waktu minimum untuk menulis aturan).

Kompilasi silang dan pembuatan di Linux, macOS, dan Windows menggunakan GCC, Clang, 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 yang dapat diulang, di mana menjalankan build di lingkungan yang berbeda akan menghasilkan pembuatan file executable yang benar-benar identik.

Utama inovasi Meson 0.51:

  • Menambahkan dukungan untuk pembangunan transparan proyek yang sudah ada yang menggunakan skrip pembangunan CMake. Meson sekarang dapat langsung membangun subproyek sederhana (seperti perpustakaan tunggal) menggunakan modul CMake, mirip dengan subproyek standar (termasuk subproyek CMake dapat ditempatkan di direktori subproyek);
  • Untuk semua kompiler yang digunakan, pengujian pendahuluan disertakan melalui perakitan dan eksekusi file pengujian sederhana (pemeriksaan kewarasan), tidak terbatas pada pengujian tanda yang ditentukan pengguna untuk kompiler silang (mulai sekarang, kompiler asli platform saat ini juga diperiksa) .
  • Menambahkan kemampuan untuk menentukan opsi baris perintah yang digunakan selama kompilasi silang, dengan pengikatan dengan menentukan awalan platform sebelum opsi. Sebelumnya, opsi baris perintah hanya mencakup build asli dan tidak dapat ditentukan untuk kompilasi silang. Opsi baris perintah sekarang berlaku terlepas dari apakah Anda membuat kompilasi asli atau silang, memastikan bahwa build asli dan lintas menghasilkan hasil yang sama;
  • Menambahkan kemampuan untuk menentukan tanda β€œ--cross-file” lebih dari satu kali pada baris perintah untuk membuat daftar beberapa file silang;
  • Menambahkan dukungan untuk kompiler ICL (Intel C/C++ Compiler) untuk platform Windows (ICL.EXE dan ifort);
  • Menambahkan dukungan toolkit awal untuk CPU Xtensa (xt-xcc, xt-xc++, xt-nm);
  • Metode β€œget_variable” telah ditambahkan ke objek β€œdependency”, yang memungkinkan Anda mendapatkan nilai variabel tanpa memperhitungkan jenis ketergantungan saat ini (misalnya, dep.get_variable(pkg-config : 'var- nama', buat : 'COP_VAR_NAME));
  • Menambahkan argumen opsi perakitan target baru, "link_bahasa", untuk secara eksplisit menentukan bahasa yang digunakan saat memanggil linker. Misalnya, program utama Fortran dapat memanggil kode C/C++, yang secara otomatis akan memilih C/C++ ketika linker Fortran harus digunakan;
  • Penanganan flag praprosesor CPPFLAGS telah diubah. Jika Meson sebelumnya menyimpan CPPFLAGS dan flag kompilasi khusus bahasa (CFLAGS, CXXFLAGS) secara terpisah, kini diproses secara tidak terpisahkan dan flag yang tercantum dalam CPPFLAGS digunakan sebagai sumber flag kompilasi lain untuk bahasa yang mendukungnya;
  • Output dari custom_target dan custom_target[i] sekarang dapat digunakan sebagai argumen dalam operasi link_with dan link_whole;
  • Generator sekarang memiliki kemampuan untuk menentukan dependensi tambahan menggunakan opsi β€œdepends” (misalnya, generator(program_runner, output: ['@[email dilindungi]'], tergantung: exe));
  • Menambahkan opsi statis ke find_library untuk memungkinkan pencarian hanya menyertakan perpustakaan yang tertaut secara statis;
  • Untuk python.find_installation, kemampuan untuk menentukan keberadaan modul Python tertentu untuk versi Python tertentu telah ditambahkan;
  • Menambahkan modul baru stable-kconfig untuk mem-parsing file kconfig;
  • Menambahkan perintah baru β€œsubproyek foreach”, yang mengambil perintah dengan argumen dan menjalankannya di semua direktori subproyek;

Sumber: opennet.ru

Tambah komentar