Autore: Fabio Di Matteo
Ultima revisione: 01/09/2026 15:18
Alcuni appunti sparsi su Meson build .
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')
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])
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.
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