# 包含子目录的 meson.build 文件
subdir('dict')
subdir('fmt')
subdir('log')
subdir('memory')
subdir('reflect')
subdir('runtime')
subdir('string')
subdir('variant')
subdir('db')
subdir('io')
subdir('futures')
subdir('module')
base_src_files = [
# 根目录源文件
'common.cpp',
'exception.cpp',
'json.cpp',
'time.cpp',
'singleton.cpp',
'error.cpp',
'error_engine.cpp',
'result.cpp',
'array.cpp',
'filesystem.cpp',
dict_src_files,
fmt_src_files,
log_src_files,
memory_src_files,
reflect_src_files,
runtime_src_files,
string_src_files,
variant_src_files,
db_src_files,
io_src_files,
futures_src_files,
module_src_files,
]
dep_arr = [boost_dep]
mcbasedeps = []
enable_conan_compile = get_option('enable_conan_compile')
add_project_arguments(
'-DENABLE_CONAN_COMPILE=' + enable_conan_compile.to_int().to_string(),
language: 'cpp',
)
if enable_conan_compile
message('使用conan构建')
libsomp_dep = dependency('libsomp', method: 'pkg-config', required: true)
liblogger_dep = dependency('liblogger', method: 'pkg-config', required: true)
dep_arr += [libsomp_dep, liblogger_dep]
endif
if meson_build
install_dir = meson.project_build_root() / 'usr/lib64'
run_command('mkdir', '-p', install_dir, check: false)
else
install_dir = 'usr/lib64'
endif
# 创建基础库(WASM 构建时跳过,因为会创建单独的 mcbase_wasm)
if not is_wasm_build
mcbase_lib = library(
'mcbase',
base_src_files,
include_directories: [incdir, srcdir],
dependencies: dep_arr,
install: true,
install_dir: install_dir,
build_by_default: true,
)
mcbase_dep = declare_dependency(
include_directories: incdir,
link_with: mcbase_lib,
dependencies: dep_arr,
)
mcbasedeps += [mcbase_dep]
endif
# ====================
# WASM 构建支持
# ====================
if is_wasm_build
# WASM 基础源文件列表(排除不兼容的文件)
wasm_base_src_files = [
# 根目录源文件
'common.cpp',
'exception.cpp',
'json.cpp',
'time.cpp',
'singleton.cpp',
'error.cpp',
'error_engine.cpp',
'result.cpp',
'array.cpp',
# 包含兼容的子模块
dict_src_files,
fmt_src_files,
memory_src_files,
reflect_src_files,
runtime_src_files,
string_src_files,
variant_src_files,
db_src_files,
io_src_files,
futures_src_files,
]
# WASM 日志源文件(排除 file_appender 和 socket appenders)
wasm_log_src_files = []
foreach f : log_src_files
if not f.contains('file_appender') and not f.contains('socket_appender') and not f.contains('socket_client')
wasm_log_src_files += f
endif
endforeach
wasm_base_src_files += wasm_log_src_files
# WASM 构建时修改依赖数组(排除 dbus 和 glib)
wasm_dep_arr = [boost_dep]
# 创建 WASM 基础库
mcbase_wasm_lib = library(
'mcbase_wasm',
wasm_base_src_files,
include_directories: [incdir, srcdir],
dependencies: wasm_dep_arr,
install: true,
install_dir: install_dir,
build_by_default: true,
)
mcbase_wasm_dep = declare_dependency(
include_directories: incdir,
link_with: mcbase_wasm_lib,
dependencies: wasm_dep_arr,
)
message('WASM 基础库构建目标已创建: mcbase_wasm')
endif
# 导出库依赖
if is_wasm_build
# WASM 构建:使用 mcbase_wasm 作为导出的依赖
mcbase_dep = mcbase_wasm_dep
else
mcbase_dep = declare_dependency(
include_directories: incdir,
link_with: mcbase_lib,
dependencies: dep_arr,
)
endif