Deaktivieren von Teilen des Builds
Diese Funktion ist seit Version 0.44.0 verfügbar.
Das Folgende ist ein üblicher Fragment, das in vielen Projekten zu finden ist
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)
Dies funktioniert gut, wird aber etwas unflexibel, wenn Sie diesen Teil des Builds optional machen möchten. Grundsätzlich läuft es darauf hinaus, if/else-Anweisungen um alle Zielaufrufe herum hinzuzufügen. Meson bietet eine einfachere Möglichkeit, dasselbe mit einem Disabler-Objekt zu erreichen.
Ein Disabler-Objekt wird mit der Funktion disabler erstellt
d = disabler()
Das Einzige, was Sie mit einem Disabler-Objekt tun können, ist zu fragen, ob es gefunden wurde
f = d.found() # returns false
Jede andere Anweisung, die ein Disabler-Objekt verwendet, gibt sofort einen Disabler zurück. Angenommen, d enthält beispielsweise ein Disabler-Objekt, dann
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
Somit können Sie, um jedes Ziel zu deaktivieren, das von der oben genannten Abhängigkeit abhängt, Folgendes tun
if use_foo_feature
d = dependency('foo')
else
d = disabler()
endif
Dies konzentriert die Handhabung dieser Option an einem Ort, und andere Build-Definitionsdateien müssen nicht mit if-Anweisungen übersät werden.
Die Ergebnisse der Suche sind