short-description: Disabling options ...
This feature is available since version 0.44.0.
The following is a common fragment found in many projects:
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)
This works fine but gets a bit inflexible when you want to make this part of the build optional. Basically it reduces to adding if/else
statements around all target invocations. Meson provides a simpler way of achieving the same with a disabler object.
A disabler object is created with the disabler
function:
d = disabler()
The only thing you can do to a disabler object is to ask if it has been found:
f = d.found() # returns false
Any other statement that uses a disabler object will immediately return a disabler. For example assuming that d
contains a disabler object then
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
Thus to disable every target that depends on the dependency given above, you can do something like this:
if use_foo_feature d = dependency('foo') else d = disabler() endif
This concentrates the handling of this option in one place and other build definition files do not need to be sprinkled with if
statements.