禁用构建部分
此功能从版本 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` 语句。
搜索结果如下