禁用构建部分

此功能从版本 0.44.0 开始可用。

以下是在许多项目中常见的代码片段

dep = dependency('foo')

# In some different directory

lib = shared_library('mylib', 'mylib.c',
  dependencies : dep)

# And in a third directory

exe = executable('mytest', 'mytest.c',
  link_with : lib)
test('mytest', exe)

这工作正常,但当您想使构建的这一部分可选时会变得有点不灵活。基本上,它简化为在所有目标调用周围添加 `if/else` 语句。Meson 提供了一种更简单的使用禁用器对象来实现相同目标的方法。

禁用器对象使用 `disabler` 函数创建

d = disabler()

您对禁用器对象唯一可以做的事情是询问它是否已被找到

f = d.found() # returns false

任何其他使用禁用器对象的语句将立即返回一个禁用器。例如,假设 `d` 包含一个禁用器对象,那么

d2 = some_func(d) # value of d2 will be disabler
d3 = true or d2   # value of d3 will be true because of short-circuiting
d4 = false or d2  # value of d4 will be disabler
if d              # neither branch is evaluated

因此,要禁用所有依赖于上述依赖项的目标,您可以执行以下操作

if use_foo_feature
  d = dependency('foo')
else
  d = disabler()
endif

这将此选项的处理集中在一个地方,而其他构建定义文件不需要添加 `if` 语句。

搜索结果如下