Was ist der Unterschied zwischen "option" und "CACHE " BOOL" für ein CMake-variable?
Ist, gibt es einen Unterschied zwischen den folgenden beiden?
set(FOO true CACHE BOOL "description")
option(FOO "description" ON)
Hintergrund: Auch wenn ich mit CMake für eine Weile, ich sah nur den option
Befehl heute und ich habe deshalb schon immer mit set
: ich Frage mich, ob es sicher ist/sich lohnt zu ersetzen, die erste mit der zweiten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In deinem Beispiel gibt es keinen Unterschied. Aber es gibt Unterschiede:
Option
hat einen Standardwert vonOFF
.CMakeDependentOption
Set
akzeptiert andere Typen alsBOOL
vor allem ;-Listen.Darüber hinaus, wenn Sie eine option zeigen Sie Ihre Benutzer, es kann festgelegt werden, sicher. Festlegen von internen Variablen, die von außen vielleicht subtil brechen Sie das Skript ungültige Werte.
set
, indem Sie die variable ein boolean kann ich nicht verhindern, dass die Benutzer gibt es eine andere Art von Wert, der z.B. in der Kommandozeile? Wie auch immer, ich finde deinen zweiten Punkt ziemlich relevant.option
oderset(...CACHE BOOL)
. So es scheint, dass diese "Art Sicherheit" gilt nur für ccmake/cmake-gui.