Meson (összeszerelő rendszer)

Mezon

A dav1d (codec-dekóder a VideoLAN projektből) építési folyamata a Meson segítségével
Típusú ingyenes és nyílt forráskódú szoftverek és automatizálási eszköz [d]
Fejlesztő Jussi Pakkanen [d] [1]
Beírva Python [2]
Operációs rendszer Unix-szerű operációs rendszer [3] és Microsoft Windows
Interfész nyelvek angol
Első kiadás 2012. március 2
Hardver platform többplatformos [3]
legújabb verzió
Állapot aktív
Engedély Apache License 2.0 [5] [1]
Weboldal mesonbuild.com
 Médiafájlok a Wikimedia Commons oldalon

A Meson ( MFA [ ˈ m i ː z ɒ n ];  angolul  -  " meson " ) egy többplatformos konzol - segédprogram , amely automatizálja a szoftver forráskódból történő létrehozásának folyamatát . A Meson nyílt forráskódú , és az Apache licenc alatt van licencelve . A Meson fő ötlete az, hogy a lehető leggyorsabban építsen, és egyetlen csepp időt se töltsön hibakereséssel és teszteléssel , valamint várja meg a fordítási folyamat megkezdését . A segédprogramnak van egy hosszabb, teljes neve is - "The Meson build system" (Meson Assembly System). De annak ellenére, hogy a Meson hivatalosan build rendszerként van pozícionálva, valójában nem az, mivel alapvetően egy másik segédprogramot használ - a Ninja build rendszert és számos más segédprogramot [6] [7] .

Történelem

Létrehozás

A Meson első verziója a karácsonyi ünnepek alatt jelent meg 2012-ben, és a finn fizikus , Jussi Pakkanen programozó fejlesztette ki. A fejlesztőt lehangolta az az állapot, amelyben az összeszerelő automatizálási rendszerek akkoriban megérkeztek. Sokakat nem szeretett, mert túl lassúak voltak, néhányat túl nehéz volt a gyakorlatban megvalósítani, másoknak pedig túl bonyolult és homályos a szintaxisa . Mivel nem találta meg a kívánt összeállítási rendszert, Jussi úgy döntött, hogy szabadidejét tölti ezen az ünnepi hétvégén, és elkészíti az igényeinek megfelelő saját build rendszert [8] [9] .

Etimológia

A segédprogram nevének megválasztásánál figyelembe vették azt a tényt , hogy ne essen egybe a Debian rendszercsomagkezelő adatbázisból származó csomagok nevével vagy a SourceForge adatbázisban található projektekkel . Mivel Jussi fizikus-programozó, valamikor úgy döntött, hogy az elemi részecske nevét használja - Gluon (angol Gluon, a ragasztó szóból - ragasztó), ami arra utal, hogy "a gluonok olyan elemi részecskék, amelyek protonokat és neutronokat tartják össze, hasonlóan a build rendszer dolga ahhoz, hogy a forráskód darabjait és egy fordítóprogramot vegyen, majd összekapcsolja őket." De sajnos ezt a nevet már felvették, majd miután több megmaradt szubatomi részecskét átválogatott , rájött, hogy a részecske mezon neve szabadnak bizonyult [10] .

Jellemzők

A Meson kitűzött célja a korszerű fejlesztési módszerek népszerűsítése. Ilyen például a „ single assembly ” metódus használata, összeállítás kódlefedettséggel , LTO optimalizálás ( link time optimization ) stb. Anélkül, hogy a programozónak ehhez támogatást kellene írnia.

Hordozhatóság

A Python nyelven írt Meson natívan Unix-szerű operációs rendszereken fut , beleértve a macOS -t, valamint a Microsoft Windows -t és számos más operációs rendszert.

A Meson támogatja a C , C++ , CUDA , D , Objective-C , Fortran , Java , C# , Rust , Vala [11] és a "Wrap" [12] függőséget kezelő mechanizmust .

A Meson támogatja a GNU Compiler Collection , Clang , Microsoft Visual C++ és más fordítókat, beleértve a nem hagyományos fordítókat, mint például az Emscripten és a Cython [13] [14] . Ugyanakkor a Meson önállóan dönti el, hogy melyik fordítót és milyen paraméterekkel használja. A projektek keresztfordítása további konfigurációt igényel, amelyet a Meson külön fájlként tart fenn, amely külső lehet egy Meson projekten [15] .

A Meson a Ninja-t használja fő összeállítási rendszereként, de használhatja a Microsoft Visual Studio -t vagy az Xcode -ot is .

Alprojektek

A Meson automatikusan képes megtalálni és használni a külső függőségeket a pkg-config , a CMake és a projekt-specifikus keresés segítségével [16] , de ez csak azokat a telepített függőségeket találja meg, amelyekkel a Meson nem tud mit kezdeni. Alternatív megoldásként, vagy tartalékként a függőséget biztosíthatjuk alprojektként – egy másikon belüli Meson projektként, vagy külső letöltési hivatkozásként, esetleg javításokkal [12] . Ez lehetővé teszi a Mesonnak, hogy feloldja a " függőségi poklot " a hétköznapi felhasználók kényelme érdekében, akik egy projektet szeretnének fordítani, de hozzájárulhat a szoftverek felfújásához is, ha helyette egy közös telepített függőséget lehetne használni. Így a Linux-csomagok használatának előnyben részesített módja háttérbe szorul.

A Meson a saját alprojekt rendszere mellett a CMake alprojekt rendszert is támogatja. A Meson összeállítási fájl hivatkozhat a Wrap DB szolgáltatásra is [17] .

Integráció az ISR-rel

A Meson kezdetben beépített támogatással rendelkezik a Visual Studio és az XCode számára, de az ISR -ek széles skálájával való integráció egyszerűsítése érdekében egy speciális API -t fejlesztettek ki a probléma megoldására. Ehhez minden alkalommal, amikor a Meson felépít, létrehoz egy „meson-info” mappát, és JSON információs fájlokat helyez el ebbe . Ezen fájlok segítségével bármely program részletes információkat kaphat az épülő projektekről [18] .

Nyelv

A Meson összeállításleíró fájlok szintaxisa (Meson nyelv) a Pythonból kölcsönzött, de maga nem Python nyelv. Úgy tervezték, hogy bármely más nyelven újra implementálható legyen [19] [20] . Például a Meson++ [21] egy C++ implementáció, a Python-függőség csak egy implementációs részlet.

A Meson nyelv szándékosan nem Turing-teljes , ezért nem tud tetszőleges programot kifejezni [22] . Ehelyett a támogatott nyelvek fordításán túlmenő tetszőleges felépítési lépések egyéni célként jeleníthetők meg [23] .

A Meson nyelv erősen típusos, ezért a beépített típusok, mint a library, a executable, a strings és ezek listái nem cserélhetők fel [24] . A változóknak nincs látható típusuk, ami szintén dinamikusan írja be a Mesont. Ellentétben ugyanazzal a Make -val , a listatípus nem választja el a karakterláncokat a szóközökön [25] .

Példa

Hozzuk létre a " Hello, World!" " projekt C nyelven, a fájl neve " main.c ".

#include <stdio.h> int main () { tesz ( "Helló, Világ!" ); return 0 ; }

Ezután hozzon létre egy fájlt - " meson.build ".

project ( 'tutorial' , 'c' ) # tutorial a projekt neve, # c - programozási nyelv futtatható ( 'demo' , 'main.c' ) # demo a végrehajtható fájl neve, # "main.c" - forráskód fájl

Először is inicializáljuk a projektet.

$ meson beállítás builddir

Megjelenik a " builddir " könyvtár, menjünk bele és építsük fel a projektünket.

$ cd builddir $ meson fordítás

A végrehajtható fájl készen áll, már csak futni kell.

$ ./demó

Szoftverprojektek a Meson használatával

A szoftverprojektek listájából a legjelentősebb és legbefolyásosabb [26] kiemelhető :

Lásd még

Jegyzetek

  1. 1 2 A Meson Build rendszer : Jogi információk 
  2. Meson build rendszer az Open Hub: Nyelvek  oldalon
  3. 1 2 A Meson Build  rendszer
  4. Kiadás 0.63.3 - 2022.
  5. GitHub:  MÁSOLÁS
  6. Meson build rendszer kiadása 0.58. Projekt a Meson C nyelvű megvalósításának létrehozására . OpenNET (2021. május 2.). Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  7. Meson kézikönyv: Running Meson - Építés a forrásból. Épületkönyvtár  nindzsával . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  8. Tim Schürmann. A Meson egy új szoftverfejlesztő rendszer . rus-linux.net (2017. április 18.). Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  9. Tim Schürmann. Meson – új építésű rendszer  . Linux Magazine (2014. szeptember 1.). Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  10. Miért hívják Mesonnak?  (angol) . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  11. A Meson Build System: Functions - project(  ) . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. február 10.
  12. 1 2 A Meson Build System: Wrap függőségi rendszer  kézikönyve . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  13. ↑ A Meson Build System : Fordítóazonosítók  . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. február 21.
  14. Jussi Pakkanen. Hogyan működik a fordítás  (angol) (PDF). meson-manual.com (2020). Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  15. A Meson Build System:  keresztösszeállítás . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  16. A Meson Build System: Függőségek – Függőségek egyéni keresési  funkcióval . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. február 21.
  17. ↑ A Meson Build System : Meson WrapDB csomagok  . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  18. ↑ A Meson Build System : Manual-IDE integráció  . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  19. A Meson Build System: GYIK – Miért van a Meson Pythonban implementálva (nem pedig X programozási nyelven)?  (angol) . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  20. A Meson Build System: GYIK – De nagyon szeretnék egy olyan Meson verziót, ami nem használ pythont!  (angol) . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  21. Meson ++  . GitHub . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 6..
  22. A Meson Build System: GYIK – Miért nem csak a Meson egy Python modul, hogy Pythonban kódolhassam a build beállításaimat?  (angol) . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  23. A Meson Build System: GYIK - Van egy szabadalmaztatott fordítói eszközláncom X, amely nem működik a Mesonnal, hogyan tudom működőképessé tenni?  (angol) . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  24. A Meson Build System:  Szintaxis . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  25. A Meson Build System: GYIK – Miért nincs Make backend?  (angol) . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.
  26. ↑ A Meson Build System: További dokumentáció - A Mesont használó projektek  listája . mesonbuild.com . Letöltve: 2022. január 22. Az eredetiből archiválva : 2022. január 23.

Linkek