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 = | ||
| | | kuvateksti = | ||
| käyttöliittymä= | | 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: | |||
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 | ||
{{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]] | ||