Meson | |
---|---|
dav1d:n (VideoLAN-projektin koodekki-dekooderi) rakennusprosessi Mesonin kanssa | |
Tyyppi | ilmaiset ja avoimen lähdekoodin ohjelmistot ja rakentamisen automaatiotyökalu [d] |
Kehittäjä | Jussi Pakkanen [d] [1] |
Sisään kirjoitettu | Python [2] |
Käyttöjärjestelmä | Unix-tyyppinen käyttöjärjestelmä [3] ja Microsoft Windows |
Käyttöliittymäkielet | Englanti |
Ensimmäinen painos | 2. maaliskuuta 2012 |
Laitteistoalusta | monialustainen [3] |
uusin versio |
|
Osavaltio | aktiivinen |
Lisenssi | Apache License 2.0 [5] [1] |
Verkkosivusto | mesonbuild.com _ |
Mediatiedostot Wikimedia Commonsissa |
Meson ( MFA [ ˈ m i ː z ɒ n ]; englanniksi - " meson " ) on monialustainen konsoliapuohjelma , joka automatisoi ohjelmiston rakentamisen lähdekoodista . Meson on avoimen lähdekoodin ja lisensoitu Apache -lisenssillä . Mesonin pääideana on rakentaa mahdollisimman nopeasti ja olla käyttämättä pisaraakaan aikaa virheenkorjaukseen ja testaamiseen sekä käännösprosessin alkamiseen . Apuohjelmalla on myös pidempi koko nimi - "Meson build system" (Meson Assembly System). Mutta huolimatta siitä, että Meson on virallisesti asetettu rakennusjärjestelmäksi, todellisuudessa se ei ole, koska se käyttää periaatteessa toista apuohjelmaa - Ninja -rakennusjärjestelmää ja useita muita apuohjelmia [6] [7] .
Mesonin ensimmäinen versio ilmestyi joululoman aikana vuonna 2012 ja sen on kehittänyt suomalainen fyysikko - ohjelmoija Jussi Pakkanen. Kehittäjä oli masentunut tilasta, johon kokoonpanoautomaatiojärjestelmät tuolloin saapuivat. Monia hän ei pitänyt, koska ne olivat liian hitaita, jotkin olivat liian vaikeita toteuttaa käytännössä, ja toisilla oli liian monimutkainen ja epäselvä syntaksi . Koska haluamaansa rakennusjärjestelmää ei löytynyt, Jussi päätti viettää vapaa-aikansa tänä lomaviikonloppuna ja luoda oman rakennusjärjestelmän, joka sopisi hänen tarpeisiinsa [8] [9] .
Apuohjelman nimi valittiin ottaen huomioon se tosiasia, että sen ei pitäisi olla sama kuin minkään Debian -järjestelmän paketinhallintatietokannan paketin tai minkään SourceForge -tietokannan projektin nimen kanssa . Koska Jussi on fyysikko-ohjelmoija, hän päätti jossain vaiheessa käyttää alkuainehiukkasen nimeä - Gluon (eng. Gluon, sanasta liima - liima), tarkoittaen, että "gluonit ovat alkuainehiukkasia, jotka pitävät protoneja ja neutroneja yhdessä, aivan kuten rakennusjärjestelmän tehtävänä on ottaa lähdekoodin palaset ja kääntäjä ja sitten linkittää ne yhteen." Mutta valitettavasti tämä nimi oli jo otettu, ja sitten lajiteltuaan useita jäljellä olevia subatomisia hiukkasia hän huomasi, että hiukkasmesonin nimi osoittautui vapaaksi [10] .
Mesonin tavoitteena on edistää nykyaikaisia kehitysmenetelmiä. Kuten " single assembly " -menetelmän käyttö, kokoonpano koodipeitolla , LTO-optimointi ( linkkiajan optimointi ) jne. Ilman ohjelmoijan tarvitsevan kirjoittaa tukea tälle.
Pythonilla kirjoitettu Meson toimii natiivisti Unix-tyyppisissä käyttöjärjestelmissä , mukaan lukien macOS , sekä Microsoft Windows ja useat muut käyttöjärjestelmät.
Meson tukee C , C++ , CUDA , D , Objective-C , Fortran , Java , C# , Rust , Vala [11] ja siinä on riippuvuuden käsittelymekanismi nimeltä "Wrap" [12] .
Meson tukee GNU Compiler Collection , Clang , Microsoft Visual C++ ja muita kääntäjiä, mukaan lukien ei-perinteiset kääntäjät, kuten Emscripten ja Cython [13] [14] . Samaan aikaan Meson päättää itsenäisesti, mitä kääntäjää ja millä parametreilla tulee käyttää. Ja projektien ristiinkääntäminen vaatii lisämäärityksiä, joita Meson ylläpitää erillisenä tiedostona, joka voi olla Meson-projektin ulkopuolella [15] .
Meson käyttää Ninjaa päärakennusjärjestelmänään, mutta voi myös käyttää Microsoft Visual Studiota tai Xcodea .
Meson voi automaattisesti etsiä ja käyttää ulkoisia riippuvuuksia pkg-config , CMake ja projektikohtaisella haulla [16] , mutta tämä löytää vain asennetut riippuvuudet, joille Meson ei voi tehdä mitään. Vaihtoehtoisesti tai varajäsenenä riippuvuus voidaan tarjota aliprojektina - Meson-projektina toisen sisällä tai sisältää ulkoisen latauslinkin, mahdollisesti korjaustiedostojen kanssa [12] . Tämä antaa Mesonille mahdollisuuden ratkaista " riippuvuushelvetti " tavallisten käyttäjien avuksi, jotka haluavat kääntää projektin, mutta se voi myös edistää ohjelmistojen turvotusta , jos sen sijaan voitaisiin käyttää yhteistä asennettua riippuvuutta. Siten ensisijainen tapa käyttää Linux-paketteja häipyy taustalle.
Meson tukee oman aliprojektijärjestelmänsä lisäksi myös CMake-aliprojektijärjestelmää. Meson- kokoonpanotiedosto voi viitata myös Wrap DB -palveluun [17] .
Mesonilla on alun perin sisäänrakennettu tuki Visual Studiolle ja XCodelle, mutta integroinnin yksinkertaistamiseksi monenlaisten ISR :ien kanssa kehitettiin erityinen API tämän ongelman ratkaisemiseksi. Tätä varten Meson luo joka kerta kun rakentaa "meson-info" -kansion ja asettaa siihen JSON - tietotiedostoja . Näiden tiedostojen avulla mikä tahansa ohjelma voi saada yksityiskohtaista tietoa rakenteilla olevista projekteista [18] .
Meson-kokoonpanon kuvaustiedostojen syntaksi (Meson-kieli) on lainattu Pythonista, mutta se ei ole itse Python-kieli. Se on suunniteltu siten, että se voidaan toteuttaa uudelleen millä tahansa muulla kielellä [19] [20] . Esimerkiksi Meson++ [21] on C++-toteutus, Python-riippuvuus on vain toteutusyksityiskohta.
Mesonin kieli ei tarkoituksella ole Turingin täydellinen eikä siksi voi ilmaista mielivaltaista ohjelmaa [22] . Sen sijaan mielivaltaiset rakennusvaiheet, jotka eivät kuulu tuettujen kielten kääntämiseen, voidaan esittää mukautetuina kohteina [23] .
Meson-kieli on vahvasti kirjoitettu, joten sisäänrakennetut tyypit, kuten kirjasto, suoritettava tiedosto, merkkijonot ja niiden luettelot, eivät ole keskenään vaihdettavissa [24] . Muuttujilla ei ole näkyvää tyyppiä, mikä tekee myös Mesonista dynaamisesti kirjoitetun. Toisin kuin sama Make , luettelotyyppi ei erota merkkijonoja välilyönnissä [25] .
Luodaan " Hei, maailma!" " projekti C-kielellä, tiedoston nimi on " main.c ".
#include <stdio.h> int main () { laittaa ( "Hei, maailma!" ); paluu 0 ; }Luo seuraavaksi sen viereen tiedosto - " meson.build ".
project ( 'tutorial' , 'c' ) # tutorial on projektin nimi, # c - ohjelmointikieli executable ( 'demo' , 'main.c' ) # demo on suoritettavan tiedoston nimi, # "main.c" - lähdekooditiedostoEnsin aloitetaan projekti.
$ meson setup builddir" builddir " -hakemisto tulee näkyviin, mennään siihen ja rakennetaan projektimme.
$ cd builddir $ meson käännösSuoritettava tiedosto on valmis, se on vain suoritettava.
$ ./demoOhjelmistoprojektien luettelosta merkittävimmät ja vaikutusvaltaisimmat [26] voidaan mainita :
Asennusautomaatiojärjestelmät | |
---|---|