pelepasan sistem binaan , yang digunakan untuk membina projek seperti Pelayan X.Org, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME dan GTK+. Meson ditulis dalam Python dan berlesen di bawah Apache 2.0.
Matlamat pembangunan utama Meson adalah untuk memastikan kelajuan binaan tinggi digabungkan dengan kemudahan dan kemudahan penggunaan. Daripada utiliti buat, rantai alat binaan digunakan secara lalai. , tetapi bahagian belakang lain, seperti Xcode dan VisualStudio, juga boleh digunakan. Sistem ini mempunyai pengendali pergantungan berbilang platform terbina dalam, membolehkan Meson digunakan untuk membina pakej untuk pengedaran. Peraturan binaan ditakrifkan dalam bahasa khusus domain yang dipermudahkan dan mudah dibaca dan difahami (pengarang berhasrat untuk pembangun menghabiskan masa yang minimum untuk menulis peraturan).
Penyusunan silang dan pembinaan pada Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS dan Windows menggunakan GCC, Clang, Visual Studio dan penyusun lain. Projek boleh dibina dalam pelbagai bahasa pengaturcaraan, termasuk C, C++, Fortran, Java dan Rust. Mod binaan tambahan disokong, yang membina semula hanya komponen yang berkaitan secara langsung dengan perubahan yang dibuat sejak binaan sebelumnya. Meson boleh digunakan untuk mencipta binaan berulang, yang menjalankan binaan dalam persekitaran yang berbeza menghasilkan penjanaan fail boleh laku yang sama sepenuhnya.
Utama Meson 0.52:
- Menambahkan sokongan percubaan untuk Webassembly menggunakan Emscripten sebagai pengkompil;
- Sokongan untuk platform Illumos dan Solaris telah dipertingkatkan dengan ketara dan dibawa ke keadaan berfungsi;
- Skrip pengantarabangsaan berasaskan Gettext kini diabaikan jika sistem tidak memasang kit alat gettext (sebelum ini, menggunakan modul i18n pada sistem tanpa gettext akan mengakibatkan ralat);
- Sokongan yang lebih baik untuk perpustakaan statik. Banyak isu dengan menggunakan perpustakaan statik yang dinyahpasang telah diselesaikan;
- Menambah keupayaan untuk menggunakan kamus untuk menetapkan pembolehubah persekitaran. Apabila memanggil environment(), elemen pertama kini boleh menjadi kamus yang mengandungi pembolehubah persekitaran yang ditakrifkan dalam bentuk kunci/nilai. Pembolehubah ini akan dipindahkan ke environment_object seolah-olah ia ditetapkan secara individu melalui kaedah set(). Kamus juga kini boleh dihantar ke pelbagai fungsi yang menyokong hujah "env".
- Menambahkan fungsi "runtarget alias_target(target_name, dep1, ...)", yang mencipta sasaran binaan peringkat pertama baharu yang boleh dipanggil dengan bahagian belakang binaan yang dipilih (cth., "ninja target_name"). Sasaran binaan ini tidak menjalankan sebarang arahan tetapi memastikan semua kebergantungan dibina;
- Pemasangan automatik pembolehubah persekitaran PKG_CONFIG_SYSROOT_DIR semasa penyusunan silang jika tetapan sys_root hadir dalam bahagian "[properties]";
- Menambahkan pilihan "--gdb-path" untuk menentukan laluan ke penyahpepijat GDB apabila menentukan pilihan "--gdb testname" untuk memulakan GDB dengan kes ujian yang ditentukan;
- Penambahan pengesanan automatik bagi sasaran binaan clang-kemas untuk menjalankan linter ini dengan semua fail sumber. Sasaran dibuat apabila clang-tidy terdapat pada sistem dan fail ".clang-tidy" (atau "_clang-tidy") ditakrifkan dalam akar projek;
- Kebergantungan ditambahkan('blok') untuk digunakan dalam sambungan Clang ;
- Pandangan penghubung dan pengkompil dipisahkan, membenarkan gabungan pengkompil dan penghubung yang berbeza digunakan;
- Kaedah all_dependencies() telah ditambahkan pada objek SourceSet sebagai tambahan kepada kaedah all_sources();
- Fail run_project_tests.py kini mempunyai pilihan "--only" untuk menjalankan ujian secara selektif (cth., "python run_project_tests.py --only fortran python3");
- Fungsi find_program() kini mempunyai keupayaan untuk mencari hanya versi program yang diperlukan (versi ditentukan dengan menjalankan program dengan pilihan "—versi");
- Untuk mengawal eksport simbol, pilihan vs_module_defs telah ditambahkan pada fungsi shared_module(), serupa dengan shared_library();
- Modul kconfig telah dikembangkan untuk menyokong configure_file() untuk menentukan fail input;
- Menambah keupayaan untuk menentukan berbilang fail input untuk pengendali "command:" untuk configure_file();
- Arahan "dist" untuk mencipta arkib telah dialihkan ke perintah peringkat pertama (sebelum ini, ia terikat dengan ninja). Pilihan "--formats" telah ditambahkan untuk menentukan jenis arkib untuk dibuat (cth.,
"meson dist -formats=xztar,zip").
Sumber: opennet.ru
