如何通过单个meson.build文件构建多个Meson项目?
解决Meson根目录构建多子项目的问题
针对你的场景,有两种直接可行的方案,不需要额外的wrap文件或复杂配置:
方案一:调整子项目结构,用subdir统一构建
如果子项目不需要独立构建,可以移除子目录里的project()指令,将其作为根项目的子模块:
- 删除
dummy1/meson.build和dummy2/meson.build中的project()行,保留具体的构建逻辑(比如executable、library等) - 根目录的
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
相关产品推荐
相关产品推荐

