Ero sivun ”Meson” versioiden välillä

Siirry navigaatioon Siirry hakuun
päivitys
p tupla popis
 
(6 välissä olevaa versiota samalta käyttäjältä ei näytetä)
Rivi 36: Rivi 36:


== Mesonin tiedostot ==
== Mesonin tiedostot ==
Meson-projekti määritellään kahden pääasiallisen tiedoston kautta:
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.
 
* ''' 2. meson_options.txt:''' Määrittelee projektiin liittyvät käännösvaihtoehdot, joita käyttäjä voi muuttaa.
'''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ö ==
== 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.
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:
'''1. Konfigurointi''' Luo käännöshakemisto (Meson hoitaa tämän itse) ja luo tarvittavat rakennustiedostot. Tämä komento ajetaan lähdekoodihakemistossa:


  meson setup builddir
  meson setup builddir


'''2. Kääntäminen:''' Käännä ohjelma Mesonin luomassa hakemistossa (''-C 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


'''3. Asennus:''' Asenna ohjelma järjestelmään (vaatii pääkäyttäjän oikeudet):
{{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


{{Huomautus|Huomaa: Monissa nykyaikaisissa Meson-projekteissa meson compile voidaan korvata lyhyemmällä ''ninja -C builddir'' -komennolla, koska [[Ninja]] on Mesonin oletusarvoinen taustajärjestelmä.}}
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==
Noudettu kohteesta ”https://www.linux.fi/wiki/Meson