Meson build rendszer kiadás 1.3

Megjelent a Meson 1.3.0 build rendszer, amelyet olyan projektek készítésére használnak, mint az X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME és GTK. A Meson kódja Python nyelven íródott, és az Apache 2.0 licenc alatt van.

A Meson fejlesztésének fő célja az összeszerelési folyamat nagy sebessége, a kényelem és a könnyű kezelhetőség kombinációja. A make segédprogram helyett alapértelmezés szerint a Ninja eszközkészletet használják az építés során, de más háttérprogramok, például az xcode és a VisualStudio is használhatók. A rendszer beépített többplatformos függőségi kezelővel rendelkezik, amely lehetővé teszi, hogy a Meson segítségével csomagokat készítsen disztribúciókhoz. Az összeállítási szabályok egyszerűsített, tartományspecifikus nyelven vannak megadva, jól olvashatóak és érthetőek a felhasználó számára (a szerzők szándéka szerint a fejlesztőnek minimális időt kell töltenie a szabályok megírásával).

Támogatja a keresztfordítást és az építkezést Linuxon, Illumos/Solarison, FreeBSD-n, NetBSD-n, DragonFly BSD-n, Haiku-n, macOS-en és Windowson a GCC, Clang, Visual Studio és más fordítók segítségével. Lehetőség van projektek készítésére különféle programozási nyelveken, köztük C, C++, Fortran, Java és Rust. A növekményes felépítési mód támogatott, amelyben csak az utolsó build óta végrehajtott változtatásokhoz közvetlenül kapcsolódó összetevők épülnek újra. A Meson segítségével megismételhető buildek generálhatók, amelyekben a build különböző környezetekben történő futtatása teljesen azonos futtatható fájlok generálását eredményezi.

A Meson 1.3 főbb újításai:

  • A compiler.compiles(), compiler.links() és compiler.run() fordítóellenőrzési metódusokhoz hozzáadtuk a „werror: true” opciót, amely a fordítói figyelmeztetéseket hibaként kezeli (ellenőrizhető, hogy a kód figyelmeztetés nélkül készült-e ).
  • A has_define metódus hozzáadva a szimbólumdefiníciók előfeldolgozó általi ellenőrzéséhez.
  • A macro_name paraméter hozzáadásra került a configure_file() függvényhez, makróvédelmet adva a kettős kapcsolatokhoz az „#include” („include guards”) révén, a makrók stílusában a C nyelvben (leegyszerűsítve a konfigurációs fájlok létrehozását dinamikusan makró nevek).
  • Új kimeneti formátum került hozzáadásra a configure_file() - JSON ("output_format: json") fájlhoz.
  • A c_std és cpp_std paraméterekhez hozzáadtuk az értéklisták használatának lehetőségét (például „default_options: 'c_std=gnu11,c11').
  • A fájlok feldolgozásához CustomTargetet használó modulokhoz hozzáadták a ninja segédprogram által kiadott üzenetek testreszabásának lehetőségét.
  • A build_target "jar" elavult, és helyette a "jar()" hívás javasolt.
  • Az 'env' paraméter hozzáadásra került a generator.process() metódushoz, hogy beállítsa azt a környezeti változót, amelyen keresztül a generátor feldolgozza a bemenetet.
  • A végrehajtható fájlokhoz társított build-célnevek megadásakor az olyan utótagok, mint a „executable('foo', 'main.c', name_suffix: 'bar')" további végrehajtható fájlokat hozhatnak létre ugyanabban a könyvtárban.
  • Hozzáadtuk a „vs_module_defs” paramétert az exectuable() függvényhez, hogy egy def fájlt használjunk, amely meghatározza a shared_module() függvénynek átadott függvények listáját.
  • 'default_options' paraméter hozzáadva a find_program() függvényhez a tartalék alprojekt alapértelmezett beállításainak megadásához.
  • Hozzáadott fs.relative_to() metódus, amely visszaadja az első argumentum relatív elérési útját a másodikhoz képest, ha az első elérési út létezik. Például: "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • A következő_symlinks paraméter hozzáadásra került az install_data(), install_headers() és install_subdir() függvényekhez; ha be van állítva, a rendszer szimbolikus hivatkozásokat követ.
  • Az int.to_string() metódushoz hozzáadtunk egy „fill” paramétert, amely fokozatosan kitölti a karakterláncot kezdő nullákkal. Például az message(n.to_string(fill: 3)) hívása n=4 esetén a "004" karakterláncot eredményezi.
  • Hozzáadott egy új célt, a clang-tidy-fixet, amely meghatározza a clang-tidy segédprogram futtatását a "-fix" jelzővel.
  • Az összeállítási cél ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) utótagjának (TARGET_SUFFIX) megadásának képessége hozzáadásra került a fordítási parancshoz.
  • MESON_PACKAGE_CACHE_DIR környezeti változó hozzáadva a csomag-gyorsítótár elérési útjának felülbírálásához (alprojektek/csomaggyorsítótár), például lehetővé téve a megosztott gyorsítótár használatát több projektben.
  • Hozzáadott "meson setup --clearcache" parancs az állandó gyorsítótár törléséhez.
  • A „szükséges” kulcsszó támogatása minden „has_*” fordítóellenőrzési metódushoz hozzáadásra került, például az „assert(cc.has_function('some_function'))” helyett a „cc.has_function('some_function')” , kötelező: igaz)”.
  • Egy új kulcsszó, a rust_abi hozzáadásra került a shared_library(), static_library(), library() és shared_module() függvényekhez, amelyet az elavult rust_crate_type helyett kell használni.

Forrás: opennet.ru

Hozzászólás