You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过单个meson.build文件构建多个Meson项目?

解决Meson根目录构建多子项目的问题

针对你的场景,有两种直接可行的方案,不需要额外的wrap文件或复杂配置:

方案一:调整子项目结构,用subdir统一构建

如果子项目不需要独立构建,可以移除子目录里的project()指令,将其作为根项目的子模块:

  1. 删除dummy1/meson.build和dummy2/meson.build中的project()行,保留具体的构建逻辑(比如executable、library等)
  2. 根目录的meson.build中添加:
    project('my_root_project', 'c') # 根据你的项目语言修改
    subdir('dummy1')
    subdir('dummy2')
    

这种方式下,所有子项目会作为根项目的一部分统一编译,共享根项目的配置和依赖。

方案二:用subproject直接引用本地目录(无需wrap文件)

如果需要保留子项目的独立project()配置,Meson支持直接引用本地目录作为subproject,不需要创建wrap文件:
根目录的meson.build中添加:

project('root_project', 'c')
# 直接引用本地子项目目录
dummy1 = subproject('dummy1')
dummy2 = subproject('dummy2')

# 如果需要使用子项目的构建产物,比如子项目生成了库,可以通过以下方式获取:
# lib_dummy1 = dummy1.get_variable('libdummy1')

这种方式下,子项目可以独立构建,同时根项目会自动触发它们的编译,子项目的project()指令不会报错。

补充说明

  • 如果子项目需要特定的构建选项,可以在subproject()中传递参数,比如:
    subproject('dummy1', default_options : ['buildtype=release', 'warning_level=3'])
    
  • 确保子目录名称和subproject()中的参数一致,或者使用相对路径(如subproject('./dummy1'))

内容的提问来源于stack exchange,提问作者Rafaelplayerxd YT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 12:15:30