Meson构建中条件依赖与目标执行顺序配置问询
Meson构建系统相关问题解答
1. 配置目标在parent_tgt构建前/后执行
Meson通过依赖关系控制目标的构建顺序,具体操作如下:
- 让目标在
parent_tgt之前执行:直接把该目标加入parent_tgt的depends参数列表,Meson会自动保证依赖目标先完成构建,再启动parent_tgt的构建。 - 让目标在
parent_tgt之后执行:把parent_tgt作为后续目标的depends参数,这样Meson会优先完成parent_tgt的构建,再执行后续目标。
如果是自定义目标内部的命令执行顺序,也可以在command参数里用平台对应语法串联(比如Windows用&&,Linux用;),但依赖关系是更推荐的跨平台实现方式。
2. 条件性添加child2_tgt作为parent_tgt的依赖
由于child2_tgt仅在Windows平台下定义,需要先检测该变量是否存在,再将其加入依赖列表,示例代码如下:
child1_tgt = custom_target('child1-target', ...) child2_tgt = null if host_system == 'windows' child2_tgt = custom_target('child2-target', ...) endif # 动态收集parent_tgt的依赖 parent_deps = [child1_tgt] if child2_tgt != null parent_deps += child2_tgt endif parent_tgt = custom_target('parent-target', ..., depends: parent_deps, )
也可以用exists()函数直接检测变量是否已定义:
parent_deps = [child1_tgt] if exists('child2_tgt') parent_deps += child2_tgt endif
两种方式都能实现仅在Windows平台下,将child2_tgt设为parent_tgt的依赖。
内容的提问来源于stack exchange,提问作者Joel
相关产品推荐
相关产品推荐

