Meson (kokoonpanojärjestelmä)

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] .

Historia

Luominen

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] .

Etymologia

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] .

Ominaisuudet

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.

Siirrettävyys

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 .

Osaprojektit

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] .

Integrointi ISR:n kanssa

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] .

Kieli

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] .

Esimerkki

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ähdekooditiedosto

Ensin aloitetaan projekti.

$ meson setup builddir

" builddir " -hakemisto tulee näkyviin, mennään siihen ja rakennetaan projektimme.

$ cd builddir $ meson käännös

Suoritettava tiedosto on valmis, se on vain suoritettava.

$ ./demo

Ohjelmistoprojektit Mesonilla

Ohjelmistoprojektien luettelosta merkittävimmät ja vaikutusvaltaisimmat [26] voidaan mainita :

Katso myös

Muistiinpanot

  1. 1 2 Meson Build -järjestelmä : Lakitiedot 
  2. Meson-rakennusjärjestelmä Open Hubissa: Languages  Page
  3. 1 2 Meson Build  -järjestelmä
  4. Julkaisu 0.63.3 - 2022.
  5. GitHub:  KOPIOINTI
  6. Meson build system -julkaisu 0.58. Projekti Mesonin toteutuksen luomiseksi C-kielellä . OpenNET (2. toukokuuta 2021). Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  7. Meson manual: Running Meson - Rakentaminen lähteestä. Rakennushakemisto  ninjan kanssa . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  8. Tim Schürmann. Meson on uusi ohjelmistorakennusjärjestelmä . rus-linux.net (18. huhtikuuta 2017). Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  9. Tim Schürmann. Meson - uusi rakennusjärjestelmä  . Linux Magazine (1. syyskuuta 2014). Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  10. Miksi sitä kutsutaan Mesoniksi?  (englanniksi) . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  11. Meson Build System: Functions - project(  ) . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 10. helmikuuta 2022.
  12. 1 2 Meson Build System: Wrap riippuvuusjärjestelmän  käsikirja . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  13. ↑ Meson Build System : Kääntäjätunnukset  . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 21. helmikuuta 2022.
  14. Jussi Pakkanen. Kuinka kokoaminen toimii  (englanniksi) (PDF). meson-manual.com (2020). Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  15. Meson Build System:  ristiinkokoelma . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  16. Meson Build System: Riippuvuudet - Riippuvuudet mukautetuilla  hakutoiminnoilla . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 21. helmikuuta 2022.
  17. ↑ Meson Build System : Meson WrapDB -paketit  . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  18. ↑ Meson Build System : Manuaalinen - IDE - integrointi  . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  19. Meson Build System: FAQ - Miksi Meson on toteutettu Pythonissa (ei ohjelmointikielellä X)?  (englanniksi) . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  20. Meson Build System: FAQ - Mutta haluan todella version Mesonista, joka ei käytä pythonia!  (englanniksi) . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  21. Meson ++  . GitHub . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 6. tammikuuta 2022.
  22. Meson Build System: FAQ - Miksi Meson ei ole vain Python-moduuli, jotta voisin koodata koontikokoonpanoni Pythonissa?  (englanniksi) . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  23. Meson Build System: FAQ - Minulla on oma kääntäjätyökaluketju X, joka ei toimi Mesonin kanssa. Miten saan sen toimimaan?  (englanniksi) . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  24. Meson Build System:  Syntaksi . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  25. Meson Build System: FAQ - Miksi Make-taustaohjelmaa ei ole?  (englanniksi) . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.
  26. ↑ Meson Build System: Lisädokumentaatio - Luettelo Mesonia käyttävistä projekteista  . mesonbuild.com . Haettu 22. tammikuuta 2022. Arkistoitu alkuperäisestä 23. tammikuuta 2022.

Linkit