Strumenti Utente

Strumenti Sito


programmazione:meson:appunti_meson

Appunti su Meson build

Autore: Fabio Di Matteo
Ultima revisione: 01/09/2026 15:18

Alcuni appunti sparsi su Meson build .

Usare librerie statiche già esistenti

In questo esempio uso il framework web Vermell

project('vermell_server', 'cpp')
 
incdir = include_directories('/opt/vermell/include')
extra_args= []
libvermell = declare_dependency(
  link_args: ['/opt/vermell/libvermell.a'],
)
 
 
 
executable('vermell_server','main.cc', 
			dependencies :[libvermell],
			c_args : extra_args,
            include_directories : incdir, 
			install : false, 
			install_dir : '/usr/local/bin')

Compilare librerie statiche insieme al nostro progetto

Compilo libpobu dentro il mi progetto.

meson.build

project('libpobu_meson', 'cpp')
inc_dir = include_directories('../../source')
 
 
 libpobu = static_library('libpobu', '../../source/libpobu.cpp', 
     include_directories: inc_dir
 )
 
 
 
src_files = [
  'test.cpp',
  '../../source/libpobu.h'
  ]
 
 
executable('test_meson', src_files,link_with :[libpobu])

Creare un eseguibile statico in c++

Qui si andrà a creare un eseguibile statico in c++ che include fmt (compilata staticamente) e il framework Crowcpp (che è header only).

project('crow', 'cpp')
 
asio = dependency('asio')
incdir = include_directories('source/Crow/include','fmt/include')
sources=['source/main.cpp' ]
fmt = declare_dependency(
  link_args: ['../fmt/build/libfmt.a'],
)
executable('crow', sources,link_args: ['-static'], dependencies :[asio,fmt],include_directories : incdir)
 

link_args: ['-static'] dice al linker di lincare staticamente la libreria standard.

Creare eseguibile statico in C++ delegando a Meson le dipendenze

Come prima cosa creiamo la cartella subprojects dentro la root del nostro progetto. Poi impartiamo i seguenti comandi per far installare a meson le dipendenze:

meson wrap install asio
meson wrap install fmt

voglio che meson mi compili le seguenti librerie scaricate dal repository Wrap.

meson.build

project('crow', 'cpp')
 
asio = dependency('asio')
fmt = dependency('fmt',static: true)
incdir = include_directories('source/Crow/include')
sources=['source/main.cpp' ]
 
executable('crow', sources,link_args: ['-static'], dependencies :[asio,fmt],include_directories : incdir)

nota che includo manualemte anche i sorgenti di crow (ignorali).

A questo punto forziamo Meson a scaricare le librerie e usarle ignorando quelle di sistema.

meson setup build  --wipe   --wrap-mode=forcefallback

poi :

cd build
ninja
programmazione/meson/appunti_meson.txt · Ultima modifica: 10/09/2026 15:32 da Fabio Di Matteo