¿Cuál es la diferencia entre “opción” y “establecer CACHE BOOL” para una variable CMake?
boolean global-variables (1)
¿Hay alguna diferencia entre los dos siguientes?
set(FOO true CACHE BOOL "description")
option(FOO "description" ON)
Antecedentes: incluso si he estado usando CMake por un tiempo, solo noté el comando de option hoy y, por lo tanto, siempre he estado usando set : Me preguntaba si es seguro / vale la pena reemplazar el primero con el segundo.
En tu ejemplo, no hay diferencia. Pero puede haber diferencias:
-
Optiontiene un valor predeterminado deOFF. - Puede hacer que una opción dependa de otras opciones con
CMakeDependentOption -
Setacepta tipos distintos aBOOL, especialmente ;-lists .
Además, cuando utiliza una opción, está indicando a su usuario que puede configurarse de manera segura. La configuración de variables internas desde el exterior puede romper sutilmente el script con valores no válidos.