Meson | |
---|---|
| |
Sorts | gratis och öppen källkodsprogramvara och verktyg för automatisering av byggnader [d] |
Utvecklaren | Jussi Pakkanen [d] [1] |
Skrivet i | Python [2] |
Operativ system | Unix-liknande operativsystem [3] och Microsoft Windows |
Gränssnittsspråk | engelsk |
Första upplagan | 2 mars 2012 |
Hårdvaruplattform | plattformsoberoende [3] |
senaste versionen | |
stat | aktiva |
Licens | Apache License 2.0 [5] [1] |
Hemsida | mesonbuild.com _ |
Mediafiler på Wikimedia Commons |
Meson ( MFA [ ˈ m i ː z ɒ n ]; från engelska - " meson " ) är ett plattformskonsolverktyg som automatiserar processen att bygga programvara från källkod . Meson är öppen källkod och licensieras under Apache -licensen . Huvudidén med Meson är att bygga så snabbt som möjligt och inte spendera en enda droppe tid på att felsöka och testa , samt att vänta på att kompileringsprocessen ska starta . Verktyget har också ett längre, fullständigt namn - "The Meson build system" (Meson Assembly System). Men trots att Meson officiellt är positionerat som ett byggsystem, är det faktiskt inte det, eftersom det i princip använder ett annat verktyg - Ninja -byggsystemet och ett antal andra verktyg [6] [7] .
Den första versionen av Meson dök upp under jullovet 2012 och utvecklades av den finske fysikern - programmeraren Jussi Pakkanen. Utvecklaren var uppgiven av det tillstånd där monteringsautomatiseringssystemen anlände vid den tiden. Många han ogillade eftersom de var för långsamma, vissa var för svåra att omsätta i praktiken och andra hade för komplicerad och oklar syntax . Efter att inte ha hittat det byggsystem han ville ha, bestämde sig Jussi för att tillbringa sin lediga tid denna helg och skapa sitt eget byggsystem som skulle passa hans behov [8] [9] .
Namnet på verktyget valdes med hänsyn till det faktum att det inte bör sammanfalla med namnet på något paket från Debians systempakethanterares databas eller med något projekt i SourceForge- databasen . Eftersom Jussi är en fysiker-programmerare, bestämde han sig vid något tillfälle för att använda namnet på elementarpartikeln - Gluon (eng. Gluon, från ordet lim - lim), vilket antyder att "gluoner är elementarpartiklar som håller ihop protoner och neutroner, ungefär som byggsystemets jobb är att ta bitar av källkod och en kompilator och sedan länka ihop dem." Men tyvärr var detta namn redan tagit, sedan, efter att ha sorterat igenom flera återstående subatomära partiklar , fick han reda på att namnet på partikelmesonen visade sig vara fritt [10] .
Mesons uttalade mål är att främja moderna utvecklingsmetoder. Som att använda metoden “ single assembly ”, montering med kodtäckning , LTO-optimering ( länktidsoptimering ) etc. Utan att programmeraren behöver skriva stöd för detta.
Meson är skrivet i Python och körs inbyggt på Unix-liknande operativsystem , inklusive macOS , såväl som Microsoft Windows och ett antal andra operativsystem.
Meson stöder C , C++ , CUDA , D , Objective-C , Fortran , Java , C# , Rust , Vala [11] och har en beroendehanteringsmekanism som kallas "Wrap" [12] .
Meson stöder GNU Compiler Collection , Clang , Microsoft Visual C++ och andra kompilatorer, inklusive icke-traditionella kompilatorer som Emscripten och Cython [13] [14] . Samtidigt bestämmer Meson självständigt vilken kompilator och med vilka parametrar som ska användas. Och korskompileringsprojekt kräver ytterligare konfiguration, som Meson underhåller som en separat fil som kan vara extern till ett Meson-projekt [15] .
Meson använder Ninja som huvudbyggsystem, men kan också använda Microsoft Visual Studio eller Xcode .
Meson kan automatiskt hitta och använda externa beroenden med pkg-config , CMake och projektspecifik sökning [16] , men detta hittar bara installerade beroenden som Meson inte kan göra något åt. Alternativt, eller som en reserv, kan beroendet tillhandahållas som ett delprojekt - ett Meson-projekt inom ett annat, eller innehållas som en extern nedladdningslänk, eventuellt med patchar [12] . Detta gör att Meson kan lösa " beroendehelvetet " för att underlätta för vanliga användare som vill kompilera ett projekt, men kan också bidra till mjukvaruuppsvällning om ett vanligt installerat beroende skulle kunna användas istället. Det föredragna läget att använda Linux-paket försvinner alltså i bakgrunden.
Meson stöder, förutom sitt eget delprojektsystem, även delprojektsystemet CMake. Meson -sammansättningsfilen kan också referera till Wrap DB-tjänsten [17] .
Meson har initialt inbyggt stöd för Visual Studio och XCode, men för att förenkla integrationen med en mängd olika ISR:er utvecklades ett speciellt API för att lösa detta problem. För att göra detta, varje gång Meson bygger, skapar den en "meson-info" -mapp och lägger JSON - informationsfiler i den . Med hjälp av dessa filer kan vilket program som helst få detaljerad information om de projekt som byggs [18] .
Syntaxen för Meson-sammansättningsbeskrivningsfiler (Meson-språk) är lånad från Python, men är i sig inte ett Python-språk. Den designades på ett sådant sätt att den kan återimplementeras på vilket annat språk som helst [19] [20] . Till exempel är Meson++ [21] en C++-implementering, Python-beroendet är bara en implementeringsdetalj.
Mesonspråket är medvetet inte Turing komplett och kan därför inte uttrycka ett godtyckligt program [22] . Istället kan godtyckliga byggsteg utanför omfattningen av kompilering av språk som stöds representeras som anpassade mål [23] .
Meson-språket är starkt skrivet, så inbyggda typer som bibliotek, körbara filer, strängar och deras listor är inte utbytbara [24] . Variabler har ingen synlig typ, vilket också gör Meson dynamiskt typad. Till skillnad från samma Make , separerar listtypen inte strängar på mellanslag [25] .
Låt oss skapa " Hej, värld!" " projekt på C-språket kommer filen att heta " main.c ".
#include <stdio.h> int main () { sätter ( "Hej, världen!" ); returnera 0 ; }Nästa, bredvid den, skapa en fil - " meson.build ".
projekt ( 'tutorial' , 'c' ) # tutorial är namnet på projektet, # c - programmeringsspråk körbar ( 'demo' , 'main.c' ) # demo är namnet på den körbara filen, # "main.c" - källkodsfilLåt oss först initiera projektet.
$ meson setup builddirKatalogen " builddir " kommer att dyka upp, låt oss gå in i den och bygga vårt projekt.
$ cd builddir $ meson kompileringDen körbara filen är klar, det återstår bara att köra den.
$ ./demoFrån listan över programvaruprojekt kan de mest betydelsefulla och inflytelserika [26] noteras :
Monteringsautomationssystem | |
---|---|