cmake_minimum_required(VERSION 3.20)
set(on "OFF")
if(on)
message("ON")
else()
message("OFF")
endif()
if(${on})
message("ON")
else()
message("OFF")
endif()
$ cmake -P test.cmake
ON
OFF
Verdadeiro se a constante for 1, ON, YES, TRUE, Y ou um número diferente de zero (incluindo números de ponto flutuante). Falso se a constante for 0, OFF, NO, FALSE, N, IGNORE, NOTFOUND, a string vazia ou terminar no sufixo -NOTFOUND. Constantes booleanas nomeadas não diferenciam maiúsculas de minúsculas. Se o argumento não for uma dessas constantes específicas, ele será tratado como uma variável ou string (veja Expansão de Variáveis mais adiante) e uma das duas formas a seguir se aplicar.
Minha compreensão desse problema é que
Para constantes predefinidas ON, é equivalente a on.
Para if(on)
, on
será analisado como constante predefinida ON
.
Para if(${on})
, ${on}
será analisado como "OFF", o que equivale a OFF
.
Não sei se meu entendimento está correto.
O que é on
?