Meson | |
---|---|
Byggeproces for dav1d (codec-dekoder fra VideoLAN-projektet) med Meson | |
Type | gratis og open source software og byggeautomatiseringsværktøj [d] |
Udvikler | Jussi Pakkanen [d] [1] |
Skrevet i | Python [2] |
Operativ system | Unix-lignende operativsystem [3] og Microsoft Windows |
Interface sprog | engelsk |
Første udgave | 2. marts 2012 |
Hardware platform | tværplatform [3] |
nyeste version |
|
Stat | aktiv |
Licens | Apache-licens 2.0 [5] [1] |
Internet side | mesonbuild.com _ |
Mediefiler på Wikimedia Commons |
Meson ( MFA [ ˈ m i ː z ɒ n ]; fra engelsk - " meson " ) er et konsolværktøj på tværs af platforme , der automatiserer processen med at bygge software fra kildekode . Meson er open source og licenseret under Apache -licensen . Hovedideen med Meson er at bygge så hurtigt som muligt og ikke bruge en eneste dråbe tid på at fejlfinde og teste , samt at vente på, at kompileringsprocessen starter . Værktøjet har også et længere, fuldt navn - "The Meson build system" (Meson Assembly System). Men på trods af at Meson officielt er positioneret som et byggesystem, er det faktisk ikke det, da det grundlæggende bruger et andet hjælpeprogram - Ninja -byggesystemet og en række andre hjælpeprogrammer [6] [7] .
Den første version af Meson dukkede op i juleferien i 2012 og blev udviklet af den finske fysiker - programmør Jussi Pakkanen. Udvikleren var nedslået af den tilstand, hvor monteringsautomatiseringssystemerne ankom på det tidspunkt. Mange kunne han ikke lide, fordi de var for langsomme, nogle var for svære at omsætte i praksis, og andre havde for kompliceret og uklar syntaks . Da han ikke havde fundet det byggesystem, han ønskede, besluttede Jussi at bruge sin fritid denne ferieweekend og skabe sit eget byggesystem, der ville passe til hans behov [8] [9] .
Navnet på hjælpeprogrammet blev valgt under hensyntagen til, at det ikke skulle falde sammen med navnet på nogen pakke fra Debians systempakkehåndteringsdatabase eller med noget projekt i SourceForge- databasen . Da Jussi er fysiker-programmør, besluttede han på et tidspunkt at bruge navnet på elementarpartikelen - Gluon (eng. Gluon, fra ordet lim - lim), hvilket antyder, at "gluoner er elementarpartikler, der holder protoner og neutroner sammen, meget ligesom byggesystemets opgave er at tage stykker af kildekode og en compiler og derefter linke dem sammen." Men desværre var dette navn allerede taget, så efter at have sorteret gennem flere resterende subatomære partikler fandt han ud af, at navnet på partikelmesonen viste sig at være frit [10] .
Mesons erklærede mål er at fremme moderne udviklingsmetoder. Såsom at bruge “ single assembly ” metoden, assembly med kodedækning , LTO optimering ( link time optimization ) osv. Uden at programmøren skal skrive support til dette.
Skrevet i Python , kører Meson indbygget på Unix-lignende operativsystemer , inklusive macOS , samt Microsoft Windows og en række andre operativsystemer.
Meson understøtter C , C++ , CUDA , D , Objective-C , Fortran , Java , C# , Rust , Vala [11] og har en afhængighedshåndteringsmekanisme kaldet "Wrap" [12] .
Meson understøtter GNU Compiler Collection , Clang , Microsoft Visual C++ og andre compilere, inklusive ikke-traditionelle compilere såsom Emscripten og Cython [13] [14] . Samtidig bestemmer Meson selvstændigt, hvilken compiler og med hvilke parametre der skal bruges. Og krydskompilering af projekter kræver yderligere konfiguration, som Meson vedligeholder som en separat fil, der kan være ekstern i forhold til et Meson-projekt [15] .
Meson bruger Ninja som hovedbyggesystem, men kan også bruge Microsoft Visual Studio eller Xcode .
Meson kan automatisk finde og bruge eksterne afhængigheder med pkg-config , CMake og projektspecifik søgning [16] , men denne finder kun installerede afhængigheder som Meson ikke kan gøre noget ved. Alternativt, eller som et fallback, kan afhængigheden leveres som et underprojekt - et Meson-projekt i et andet, eller indeholdt som et eksternt downloadlink, eventuelt med patches [12] . Dette giver Meson mulighed for at løse " afhængighedshelvede " af hensyn til almindelige brugere, der ønsker at kompilere et projekt, men kan også bidrage til software- bloat, hvis en fælles installeret afhængighed kunne bruges i stedet. Således forsvinder den foretrukne måde at bruge Linux-pakker i baggrunden.
Meson understøtter, udover sit eget delprojektsystem, også CMake delprojektsystemet. Meson- assemblyfilen kan også henvise til Wrap DB-tjenesten [17] .
Meson har oprindeligt indbygget understøttelse af Visual Studio og XCode, men for at forenkle integrationen med en bred vifte af ISR'er blev der udviklet en speciel API til at løse dette problem. For at gøre dette, hver gang Meson bygger, opretter den en "meson-info" -mappe og lægger JSON - informationsfiler i den . Ved hjælp af disse filer kan ethvert program få detaljeret information om de projekter, der bygges [18] .
Syntaksen for Meson-samlingsbeskrivelsesfiler (Meson-sprog) er lånt fra Python, men er ikke i sig selv et Python-sprog. Det blev designet på en sådan måde, at det kan genimplementeres på et hvilket som helst andet sprog [19] [20] . For eksempel er Meson++ [21] en C++ implementering, Python-afhængigheden er blot en implementeringsdetalje.
Meson-sproget er målrettet ikke Turing komplet og kan derfor ikke udtrykke et vilkårligt program [22] . I stedet kan vilkårlige byggetrin ud over omfanget af kompilering af understøttede sprog repræsenteres som brugerdefinerede mål [23] .
Meson-sproget er stærkt indtastet, så indbyggede typer såsom bibliotek, eksekverbare, strenge og deres lister er ikke udskiftelige [24] . Variabler har ingen synlig type, hvilket også gør Meson dynamisk skrevet. I modsætning til samme mærke adskiller listetypen ikke strenge på mellemrum [25] .
Lad os skabe " Hej, verden!" " projekt i C-sprog, vil filen blive kaldt " main.c ".
#include <stdio.h> int main () { sætter ( "Hej, verden!" ); returnere 0 ; }Ved siden af den skal du oprette en fil - " meson.build ".
projekt ( 'tutorial' , 'c' ) # tutorial er navnet på projektet, # c - programmeringssprog eksekverbar ( 'demo' , 'main.c' ) # demo er navnet på den eksekverbare, # "main.c" - kildekodefilLad os først initialisere projektet.
$ meson setup builddirMappen " builddir " vises, lad os gå ind i den og bygge vores projekt.
$ cd builddir $ meson kompileringDen eksekverbare fil er klar, det er kun tilbage at køre den.
$ ./demoFra listen over softwareprojekter kan de mest betydningsfulde og indflydelsesrige [26] noteres :
Monteringsautomatiseringssystemer | |
---|---|