Meson build system -julkaisu 1.3

Meson 1.3.0 -koontijärjestelmän julkaisu on julkaistu, jolla rakennetaan projekteja, kuten X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME ja GTK. Meson-koodi on kirjoitettu Pythonilla ja lisensoitu Apache 2.0 -lisenssillä.

Mesonin tärkein kehitystavoite on tarjota nopea kokoonpanoprosessi yhdistettynä mukavuuteen ja helppokäyttöisyyteen. Maken sijaan koontiversio käyttää oletusarvoisesti Ninja-työkalupakkia, mutta myös muita taustaohjelmia, kuten xcode ja VisualStudio, voidaan käyttää. Järjestelmässä on sisäänrakennettu usean alustan riippuvuuskäsittelijä, jonka avulla voit käyttää Mesonia jakelupakettien rakentamiseen. Kokoonpanosäännöt on asetettu yksinkertaistetulla verkkotunnuskohtaisella kielellä, ne ovat käyttäjälle hyvin luettavia ja ymmärrettäviä (tekijöiden idean mukaan kehittäjän tulee käyttää sääntöjen kirjoittamiseen mahdollisimman vähän aikaa).

Ristikääntämistä ja rakentamista Linuxille, Illumos/Solarisille, FreeBSD:lle, NetBSD:lle, DragonFly BSD:lle, Haikulle, macOS:lle ja Windowsille GCC:n, Clangin, Visual Studion ja muiden kääntäjien avulla tuetaan. On mahdollista rakentaa projekteja eri ohjelmointikielillä, mukaan lukien C, C++, Fortran, Java ja Rust. Inkrementaalinen rakennustila on tuettu, jossa vain komponentit, jotka liittyvät suoraan edellisen koontiversion jälkeen tehtyihin muutoksiin, rakennetaan uudelleen. Mesonilla voidaan luoda toistettavia koontiversioita, joissa koontiversion suorittaminen eri ympäristöissä johtaa täysin identtisiin suoritettaviin tiedostoihin.

Meson 1.3:n tärkeimmät innovaatiot:

  • Lisätty vaihtoehto “werror: true” kääntäjien tarkistusmenetelmiin compiler.compiles(), compiler.links() ja compiler.run(), joka käsittelee kääntäjän varoitukset virheinä (voidaan käyttää tarkistamaan, että koodi on rakennettu ilman varoituksia ).
  • Lisätty has_define-metodi symbolien määrittelyn tarkistamiseksi esiprosessorilla.
  • Parametri macro_name on lisätty configure_file()-funktioon, joka lisää makrosuojauksen kaksoisyhteyksille "#include" ("sisällytä vartijat") kautta. Se on suunniteltu makrojen tyyliin C-kielellä (yksinkertaistaa dynaamisten asetustiedostojen luomista makrojen nimet).
  • Uusi tulostusmuoto on lisätty tiedostoon configure_file() - JSON ("output_format: json").
  • Lisätty mahdollisuus käyttää arvoluetteloita c_std- ja cpp_std-parametreihin (esimerkiksi "default_options: 'c_std=gnu11,c11").
  • Moduuleissa, jotka käsittelevät tiedostoja CustomTargetilla, on lisätty mahdollisuus mukauttaa ninja-apuohjelman lähettämiä viestejä.
  • Build_target "jar" on vanhentunut, ja sen sijaan suositellaan kutsua "jar()".
  • 'env'-parametri on lisätty generator.process()-metodiin ympäristömuuttujan asettamiseksi, jonka kautta generaattori käsittelee syötteen.
  • Kun määrität suoritettaviin tiedostoihin liittyviä koontiversion kohteiden nimiä, jälkiliitteet, kuten "executable('foo', 'main.c', name_suffix: 'bar')" voivat luoda lisäsuoritustiedostoja samaan hakemistoon.
  • Lisättiin parametri "vs_module_defs" exectuable()-funktioon käyttääkseen def-tiedostoa, joka määrittää luettelon share_module()-funktiolle.
  • Lisätty 'default_options'-parametri find_program()-funktioon vara-aliprojektin oletusasetusten määrittämiseksi.
  • Lisätty fs.relative_to()-metodi, joka palauttaa ensimmäisen argumentin suhteellisen polun suhteessa toiseen, jos ensimmäinen polku on olemassa. Esimerkiksi "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Parametri next_symlinks on lisätty install_data(), install_headers() ja install_subdir()-funktioihin; kun se on asetettu, seuraa symbolisia linkkejä.
  • Int.to_string()-metodiin on lisätty "fill"-parametri, joka täyttää merkkijonon asteittain etunollalla. Esimerkiksi sanoman (n.to_string(fill: 3)) kutsuminen arvolle n=4 tuottaa merkkijonon "004".
  • Lisätty uusi kohde, clang-tidy-fix, joka määrittää clang-tidy-apuohjelman suorittamisen "-fix"-lipulla.
  • Mahdollisuus määrittää kokoonpanokohteen ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) pääte (TARGET_SUFFIX) on lisätty kääntämiskomentoon.
  • Lisätty ympäristömuuttuja MESON_PACKAGE_CACHE_DIR ohittamaan pakettivälimuistin polun (aliprojektit/pakettivälimuisti), jolloin voit käyttää jaettua välimuistia useissa projekteissa.
  • Lisätty "meson setup --clearcache" -komento tyhjentääksesi pysyvän välimuistin.
  • Tuki "pakolliselle" avainsanalle on lisätty kaikkiin "has_*"-kääntäjän tarkistusmenetelmiin, esimerkiksi "assert(cc.has_function('some_function'))" sijaan voit nyt määrittää "cc.has_function('some_function'"). , vaaditaan: tosi)".
  • Uusi avainsana rust_abi on lisätty share_library(), static_library(), library() ja share_module()-funktioihin, joita tulee käyttää vanhentuneen rust_crate_typen sijaan.

Lähde: opennet.ru

Lisää kommentti