meson ninja构建
环境中已经安装了python3
sudo apt install meson ninja-build
先上最简单的例子
1. 写code
2. 写meson.build
eg:
project('tutorial','c')
executable('demo','main.c')
3. 执行meson setup builddir
4. cd builddir
5. 执行ninja
来个例子
1 project('log', 'c')
2 cc=meson.get_compiler('c')
3 dep=[]
4 dep += cc.find_library('z')
5 dep += cc.find_library('log4c')
6
7 inc_dir= []
8
9 src_ = []
10 src_ += 'log.c'
11 src_ += 'test.c'
12
13
14 executable('log_test',
15 sources : src_,
16 include_directories : inc_dir,
17 dependencies : dep)
链接多个lib文件
folder1/meson.build
subdir('platform_utils')
src_files = files('adi.c')
inc_dir = ['platform_utils/',
'../shell',
'../bsp']
static_lib = static_library('platform.a',
src_files,
include_directories : inc_dir,
dependencies:shell_dep)
platform_dep += declare_dependency(link_with: static_lib,
include_directories: inc_dir)
folder2/meson.build
src_files = files('public/src/adi_1.c',
'public/src/adi_2_utilities.c',
'public/src/adi_3.c')
inc_dir = ['public/include',
'../../common']
static_lib = static_library('libadi_ad1.a',
src_files,
include_directories : inc_dir,
dependencies : [common_dep, platform_dep])
devices_dep += declare_dependency(link_with: static_lib, include_directories: inc_dir)
main meson.build
project('bt', 'c')
cc=meson.get_compiler('c')
dep=[]
dep += cc.find_library('z')
dep += cc.find_library('log4c')
dep += cc.find_library('pthread')
dep += cc.find_library('m')
dep += cc.find_library('stdc++')
inc_dir= []
inc_dir += './platforms'
inc_dir += 'devices/adrv/public/include'
src_ = files('init.c',
'log.c',
'test.c')
common_dep = []
subdir('common')
shell_dep = []
subdir('shell')
executable('log_test',
sources : src_,
include_directories : inc_dir,
dependencies : [common_dep, shell_dep, dep],
install : true)