Keluaran sistem binaan Meson 1.3

Keluaran sistem binaan Meson 1.3.0 telah diterbitkan, yang digunakan untuk membina projek seperti Pelayan X.Org, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME dan GTK. Kod Meson ditulis dalam Python dan dilesenkan di bawah lesen Apache 2.0.

Matlamat pembangunan utama Meson adalah untuk menyediakan proses pemasangan berkelajuan tinggi yang digabungkan dengan kemudahan dan kemudahan penggunaan. Daripada membuat, binaan menggunakan kit alat Ninja secara lalai, tetapi bahagian belakang lain seperti xcode dan VisualStudio juga boleh digunakan. Sistem ini mempunyai pengendali pergantungan berbilang platform terbina dalam yang membolehkan anda menggunakan Meson untuk membina pakej untuk pengedaran. Peraturan pemasangan ditetapkan dalam bahasa khusus domain yang dipermudahkan, ia boleh dibaca dengan baik dan difahami oleh pengguna (mengikut idea pengarang, pembangun harus menghabiskan masa minimum menulis peraturan).

Menyusun silang dan membina pada Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS dan Windows menggunakan GCC, Clang, Visual Studio dan penyusun lain disokong. Ia adalah mungkin untuk membina projek dalam pelbagai bahasa pengaturcaraan, termasuk C, C++, Fortran, Java dan Rust. Mod binaan tambahan disokong, di mana hanya komponen yang berkaitan secara langsung dengan perubahan yang dibuat sejak binaan terakhir dibina semula. Meson boleh digunakan untuk menjana binaan berulang, yang menjalankan binaan dalam persekitaran yang berbeza menghasilkan boleh laku yang sama sepenuhnya.

Inovasi utama Meson 1.3:

  • Menambah pilihan "werror: true" pada kaedah semakan pengkompil compiler.compiles(), compiler.links() dan compiler.run(), yang menganggap amaran pengkompil sebagai ralat (boleh digunakan untuk menyemak sama ada kod itu dibina tanpa amaran ).
  • Menambah kaedah has_define untuk menyemak definisi simbol oleh prapemproses.
  • Parameter macro_name telah ditambahkan pada fungsi configure_file(), menambah perlindungan makro untuk sambungan berganda melalui "#include" ("include guards"), direka dalam gaya makro dalam bahasa C (memudahkan penciptaan fail konfigurasi dengan dinamik nama makro).
  • Format output baharu telah ditambahkan pada configure_file() - JSON ("output_format: json").
  • Menambahkan keupayaan untuk menggunakan senarai nilai pada parameter c_std dan cpp_std (contohnya, "pilihan_lalai: 'c_std=gnu11,c11β€²').
  • Dalam modul yang menggunakan CustomTarget untuk memproses fail, keupayaan untuk menyesuaikan output mesej oleh utiliti ninja telah ditambah.
  • build_target "jar" telah ditamatkan dan panggilan "jar()" disyorkan sebaliknya.
  • Parameter 'env' telah ditambahkan pada kaedah generator.process() untuk menetapkan pembolehubah persekitaran yang melaluinya penjana akan memproses input.
  • Apabila menentukan nama sasaran binaan yang dikaitkan dengan boleh laku, akhiran seperti "boleh laku('foo', 'main.c', akhiran_nama: 'bar')" dibenarkan untuk menjana boleh laku tambahan dalam direktori yang sama.
  • Menambahkan parameter "vs_module_defs" pada fungsi boleh laku() untuk menggunakan fail def yang mentakrifkan senarai fungsi yang dihantar ke shared_module().
  • Menambahkan parameter 'default_options' pada fungsi find_program() untuk menetapkan pilihan lalai untuk subprojek sandaran.
  • Kaedah fs.relative_to() ditambahkan, yang mengembalikan laluan relatif untuk hujah pertama, relatif kepada yang kedua, jika laluan pertama wujud. Contohnya, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Parameter following_symlinks telah ditambahkan pada fungsi install_data(), install_headers() dan install_subdir(); apabila ditetapkan, pautan simbolik diikuti.
  • Parameter "isi" telah ditambahkan pada kaedah int.to_string() untuk mengisi rentetan secara berperingkat dengan sifar pendahuluan. Sebagai contoh, memanggil message(n.to_string(fill: 3)) untuk n=4 akan menghasilkan rentetan "004".
  • Menambah sasaran baharu, clang-tidy-fix, yang menentukan menjalankan utiliti clang-tidy dengan bendera "-fix".
  • Keupayaan untuk menentukan akhiran (TARGET_SUFFIX) sasaran pemasangan ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) telah ditambahkan pada arahan kompil.
  • Menambahkan pembolehubah persekitaran MESON_PACKAGE_CACHE_DIR untuk mengatasi laluan ke cache pakej (subprojek/packagecache), contohnya, membolehkan anda menggunakan cache kongsi dalam beberapa projek.
  • Menambahkan arahan "meson setup --clearcache" untuk mengosongkan cache berterusan.
  • Sokongan untuk kata kunci "diperlukan" telah ditambahkan pada semua kaedah semakan pengkompil "has_*", sebagai contoh, bukannya "assert(cc.has_function('some_function'))" anda kini boleh menentukan "cc.has_function('some_function'). , dikehendaki: benar)”.
  • Kata kunci baharu, rust_abi, telah ditambahkan pada fungsi shared_library(), static_library(), library(), dan shared_module(), yang sepatutnya digunakan dan bukannya rust_crate_type yang tidak digunakan lagi.

Sumber: opennet.ru

Tambah komen