Ero sivun ”Meson” versioiden välillä

Siirry navigaatioon Siirry hakuun
Meson
 
p tupla popis
 
(12 välissä olevaa versiota samalta käyttäjältä ei näytetä)
Rivi 1: Rivi 1:
{{ Ohjelma  
{{Ohjelma
| nimi=Meson
| nimi           = Meson
| kuva=  
| logo          =
| kuvateksti=  
| kuva           =  
| lisenssi=
| kuvateksti     =
| käyttöliittymä=teksti
| tekijä        =  
| kotisivu=
| kehittäjä      = Jussi Pakkanen (perustaja), Meson-yhteisö
| lähdekoodi=
| moottori      = [[Ninja]]
| ensijulkaisu  = 2012
| vakaaversio    =
| vakaapvm      =
| kehitysversio  =
| kehityspvm    =
| ohjelmoitu    = [[Python]]
| käyttöliittymä = Komentorivi (CLI)
| tyyppi        = Rakennusjärjestelmä (Build System)
| lisenssi      = [[Apache-lisenssi]] 2.0
| kotisivu       = [https://mesonbuild.com/ mesonbuild.com]
| lähdekoodi     = [https://github.com/mesonbuild/meson github.com/mesonbuild/meson]
}}
}}


'''Meson''' on usealla alustalla toimiva käännösjärjestelmä. Se on käytössä muun muassa [[GNOME-projektissa]].
'''Meson''' on moderni, nopea ja usealla alustalla toimiva käännösjärjestelmä (build system). Se on suunniteltu olemaan käyttäjäystävällinen ja toimii automaattisesti yhdessä nopean [[Ninja]]-rakennusjärjestelmän kanssa käännösprosessin suorittamiseksi. Meson on yleistynyt erityisesti vapaan lähdekoodin projekteissa ja on käytössä muun muassa [[GNOME]]-projektissa.
 
== Tavoitteet ja periaatteet ==
Mesonin perusfilosofiaan kuuluu kolme keskeistä periaatetta:
 
* '''1. Nopeus:''' Meson käyttää [[Ninja]]-käännöstyökalua (Build system) taustalla, minkä ansiosta se on erittäin nopea suurtenkin projektien uudelleenkäännöksissä.
* '''2. Käytettävyys:''' Rakennusmääritykset tehdään yksinkertaisella, erillisellä Meson-kielellä, joka on luettavampi ja ymmärrettävämpi kuin monien muiden järjestelmien käyttämät skriptit.
* '''3. Yhteensopivuus:''' Se tukee natiivisti useita kieliä (esim. C, C++, Rust, Java) ja alustoja (Linux, macOS, Windows, jne.), helpottaen ristiinkäännöstä.
 
== Asennus ==
{{Asenna|Meson|meson}}
 
Mesonin lisäksi usein tarvitaan sen taustajärjestelmä Ninja.
{{Asenna|Ninja|ninja-build}}
 
== Mesonin tiedostot ==
Meson-projekti määritellään kahden pääasiallisen tiedoston kautta.
 
'''1. meson.build'''
 
Pääasiallinen rakennusmääritystiedosto, joka kuvaa, mitä tiedostoja projektissa on ja miten ne käännetään.
 
C-koodi (main.c)
<syntaxhighlight lang="C">
#include <stdio.h>
#ifdef DEBUG
    printf("Debug mode is enabled!\n");
#endif
 
int main(void) {
    printf("Hei, Maailma!\n");
    return 0;
}
</syntaxhighlight>
 
'''Mesonin määritys (meson.build)'''
 
<syntaxhighlight lang="meson">
meson project('Hei', 'c') # Määrittelee projektin nimen (Hei) ja käytettävän kielen (c).
executable('hei', 'main.c') # Luo ajettavan ohjelman nimeltä hei, joka käännetään tiedostosta main.c.
</syntaxhighlight>
 
'''2. meson_options.txt'''
 
meson_options.txt-tiedosto määrittelee projektin käännösvaihtoehtoja, joita käyttäjä voi muuttaa konfigurointivaiheessa.
 
<syntaxhighlight lang="text">
option('debug_mode', type: 'boolean', value: false, description: 'Enable debug output')
option('optimization_level', type: 'combo', choices: ['0', '1', '2', '3'], value: '2', description: 'Set compiler optimization level')
</syntaxhighlight>
 
'''Mesonin logiikka (meson.build)'''
 
<syntaxhighlight lang="text">
project('Hei', 'c')
 
# Haetaan käyttäjän valinnat
debug_mode = get_option('debug_mode')
opt_level = get_option('optimization_level')
 
executable('hei', 'main.c',
  c_args: ['-O' + opt_level] + (debug_mode ? ['-DDEBUG'] : [])
)
</syntaxhighlight>
 
Kun konfiguroit projektin, voit antaa valinnat komentorivillä:
meson setup builddir -Ddebug_mode=true -Doptimization_level=3
Tämä kääntää ohjelman -O3 optimoinnilla ja lisää -DDEBUG-määrittelyn, jolloin koodissa voi käyttää esimerkiksi:
<syntaxhighlight lang="c">
#ifdef DEBUG
    printf("Debug mode is enabled!\n");
#endif
</syntaxhighlight>
 
== Käyttö ==
Meson suosii aina ulkopuolista käännöstä (out-of-source build), mikä tarkoittaa, että käännöksessä syntyvät tiedostot (kuten objektit ja binäärit) luodaan erilliseen hakemistoon (tässä esimerkissä builddir) lähdekoodihakemiston ulkopuolelle.
 
'''1. Konfigurointi''' Luo käännöshakemisto (Meson hoitaa tämän itse) ja luo tarvittavat rakennustiedostot. Tämä komento ajetaan lähdekoodihakemistossa:


==Käyttö==
Yleensä projekti käännetään ajamalla sen lähdekoodihakemistossa komento:
  meson setup builddir
  meson setup builddir
Jos haluat asentaa ohjelman paikallisesti ilman pääkäyttäjän oikeuksia (esim. hakemistoon ''~/.local''), konfiguroi Meson alussa ''--prefix''-valitsimella: ''meson setup builddir --prefix=~/.local''
'''2. Kääntäminen''' Käännä ohjelma Mesonin luomassa hakemistossa (''-C builddir''):
  meson compile -C builddir
  meson compile -C builddir


Tämän jälkeen ohjelma voidaan asentaa tyypillisesti komennolla:
{{Huomautus|Huomaa: Monissa nykyaikaisissa Meson-projekteissa meson compile voidaan korvata lyhyemmällä ''ninja -C builddir'' -komennolla, koska [[Ninja]] on Mesonin oletusarvoinen taustajärjestelmä.}}
 
'''3. Asennus''' Asenna ohjelma järjestelmään (vaatii pääkäyttäjän oikeudet):
 
  sudo meson install -C builddir
  sudo meson install -C builddir
Käytä sudoa vain, jos asennat järjestelmänlaajuisiin hakemistoihin. Käyttäjäkohtaisessa asennuksessa (käyttäen ''--prefixiä'') [[sudo]]a ei tarvita.


==Katso myös==
==Katso myös==
* [[CMake]]
* [[CMake]]
* [[Autotools]]
* [[Autotools]]
* [[Ninja]]


[[Luokka:Kehitystyökalut]]
[[Luokka:Kehitystyökalut]]
Noudettu kohteesta ”https://www.linux.fi/wiki/Meson