Meson build sistēmas laidiens 1.3

Ir publicēts Meson 1.3.0 būvēšanas sistēmas izlaidums, kas tiek izmantots tādu projektu izveidei kā X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME un GTK. Meson kods ir rakstīts Python un ir licencēts saskaņā ar Apache 2.0 licenci.

Galvenais Meson attīstības mērķis ir nodrošināt ātru montāžas procesu apvienojumā ar ērtībām un lietošanas vienkāršību. Make vietā pēc noklusējuma tiek izmantots Ninja rīku komplekts, taču var izmantot arī citas aizmugursistēmas, piemēram, xcode un VisualStudio. Sistēmai ir iebūvēts vairāku platformu atkarības apstrādātājs, kas ļauj izmantot Meson, lai izveidotu pakotnes izplatīšanai. Montāžas noteikumi ir iestatīti vienkāršotā domēna specifiskā valodā, tie ir labi salasāmi un lietotājam saprotami (pēc autoru idejas izstrādātājam noteikumu rakstīšanai jāpavada minimāls laiks).

Tiek atbalstīta savstarpēja kompilēšana un veidošana uz Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS un Windows, izmantojot GCC, Clang, Visual Studio un citus kompilatorus. Ir iespējams veidot projektus dažādās programmēšanas valodās, tostarp C, C++, Fortran, Java un Rust. Tiek atbalstīts pakāpenisks veidošanas režīms, kurā tiek pārbūvēti tikai tie komponenti, kas ir tieši saistīti ar izmaiņām, kas veiktas kopš pēdējās būvēšanas. Meson var izmantot atkārtojamu būvējumu ģenerēšanai, kur, palaižot būvējumu dažādās vidēs, tiek ģenerēti pilnīgi identiski izpildāmie faili.

Galvenie Meson 1.3 jauninājumi:

  • Pievienota opcija “werror: true” kompilatora pārbaudes metodēm compiler.compiles(), compiler.links() un compiler.run(), kas kompilatora brīdinājumus uzskata par kļūdām (var izmantot, lai pārbaudītu, vai kods ir izveidots bez brīdinājumiem ).
  • Pievienota has_define metode, lai pārbaudītu simbola definīciju pēc priekšapstrādātāja.
  • Parametrs macro_name ir pievienots funkcijai configure_file(), pievienojot makro aizsardzību dubultiem savienojumiem, izmantojot “#include” (“iekļaut aizsargus”), kas izstrādāts makro stilā C valodā (vienkāršo konfigurācijas failu izveidi ar dinamisku palīdzību makro nosaukumi).
  • Failam configure_file() ir pievienots jauns izvades formāts - JSON (“output_format: json”).
  • Pievienota iespēja izmantot vērtību sarakstus parametriem c_std un cpp_std (piemēram, “default_options: 'c_std=gnu11,c11′').
  • Moduļos, kuros failu apstrādei tiek izmantots CustomTarget, ir pievienota iespēja pielāgot ninja utilīta izvadītos ziņojumus.
  • Build_target "jar" ir novecojis, un tā vietā ieteicams izsaukt "jar()".
  • Parametrs “env” ir pievienots metodei generator.process(), lai iestatītu vides mainīgo, caur kuru ģenerators apstrādās ievadi.
  • Norādot būvējuma mērķa nosaukumus, kas saistīti ar izpildāmajiem failiem, sufiksi, piemēram, "executable('foo', 'main.c', name_suffix: 'bar')", ir atļauti, lai ģenerētu papildu izpildāmos failus tajā pašā direktorijā.
  • Funkcijai exectuable() tika pievienots parametrs “vs_module_defs”, lai izmantotu def failu, kas definē share_module() nodoto funkciju sarakstu.
  • Pievienots parametrs "default_options" funkcijai find_program(), lai iestatītu noklusējuma opcijas rezerves apakšprojektam.
  • Pievienota metode fs.relative_to(), kas atgriež relatīvo ceļu pirmajam argumentam attiecībā pret otro, ja pirmais ceļš pastāv. Piemēram, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Funkcijām install_data(), install_headers() un install_subdir() ir pievienots parametrs next_symlinks; kad tas ir iestatīts, tiek ievērotas simboliskās saites.
  • Metodei int.to_string() ir pievienots parametrs “fill”, lai pakāpeniski aizpildītu virkni ar nullēm. Piemēram, izsaucot ziņojumu (n.to_string(fill: 3)) n=4, tiks izveidota virkne "004".
  • Pievienots jauns mērķis clang-tidy-fix, kas nosaka clang-tidy utilīta palaišanu ar karogu "-fix".
  • Kompilēšanas komandai ir pievienota iespēja norādīt montāžas mērķa ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) sufiksu (TARGET_SUFFIX).
  • Pievienots vides mainīgais MESON_PACKAGE_CACHE_DIR, lai ignorētu ceļu uz pakotnes kešatmiņu (apakšprojekti/pakešu kešatmiņa), piemēram, ļaujot vairākos projektos izmantot koplietoto kešatmiņu.
  • Pievienota komanda "meson setup --clearcache", lai notīrītu pastāvīgo kešatmiņu.
  • Atslēgvārda “required” atbalsts ir pievienots visām “has_*” kompilatora pārbaudes metodēm, piemēram, “assert(cc.has_function('some_function'))” vietā tagad varat norādīt “cc.has_function('some_function' , obligāti: taisnība)”.
  • Funkcijām shared_library(), static_library(), library() un shared_module() ir pievienots jauns atslēgvārds rust_abi, kas jāizmanto novecojušās rust_crate_type vietā.

Avots: opennet.ru

Pievieno komentāru