Strumenti Utente

Strumenti Sito


programmazione:meson:appunti_meson

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
programmazione:meson:appunti_meson [07/09/2026 17:04] – Fabio Di Matteoprogrammazione:meson:appunti_meson [10/09/2026 15:32] (versione attuale) – Fabio Di Matteo
Linea 29: Linea 29:
 </code> </code>
  
-===== Compilare librerie statiche insieme dentro al proprio progetto =====+===== Compilare librerie statiche insieme al nostro progetto =====
  
 Compilo libpobu dentro il mi progetto. Compilo libpobu dentro il mi progetto.
Linea 55: Linea 55:
  
 </code> </code>
 +
 +===== 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).
 +
 +<code python>
 +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)
 +
 +</code>
 +
 +**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:
 +
 +<file>
 +meson wrap install asio
 +meson wrap install fmt
 +</file>
 +
 +voglio che meson mi compili le seguenti librerie scaricate dal repository Wrap. \\
 +
 +**meson.build**
 +
 +<code python>
 +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)
 +
 +
 +</code>
 +
 +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.
 +
 +<file>meson setup build  --wipe   --wrap-mode=forcefallback</file>
 +poi :
 +<file>
 +cd build
 +ninja
 +</file>
 +
 +
 +
  
  
programmazione/meson/appunti_meson.1788793480.txt.gz · Ultima modifica: 07/09/2026 17:04 da Fabio Di Matteo