Могу ли я установить переменную CMake на результат логического выражения? - PullRequest
0 голосов
/ 20 июня 2020

Рассмотрим следующий код CMake:

if(VAR_1 STREQUAL VAR_2)
    set(VAR_3 ON)
else()
    set(VAR_3 OFF)
endif()

Я хочу написать то же самое, но однострочно. Меня не особо волнует, какое логическое представление VAR_3 в итоге будет использовать. Так что мне нужно установить его как результат вычисления логического выражения.

Теперь это не работает:

set(VAR_3 (VAR_1 STREQUAL VAR_2) )

и не работает:

set(VAR_3 (${VAR_1} STREQUAL ${VAR_2}) )

Скорее, они дают мне что-то вроде ;ValueOfVar1Here;STREQUAL;ValueOfVar2Here; - это не то, что я хочу.

Могу я как-нибудь получить желаемую оценку?

1 Ответ

1 голос
/ 20 июня 2020

Нет, не можешь. Есть одна команда cmake только в одной строке. Каждый вызов команды сценария cmake должен заканчиваться ) (с последующим необязательным комментарием) и следующей за ним новой строкой (см. cmake do c об исходных файлах ). Вы по-прежнему можете написать макрос, который сделает то, что вы хотите.

macro(assign_me_bool var)
     if(${ARGV})
         set(${var} ON)
     else()
         set(${VAR} OFF)
     endif()
endmacro()

assign_me_bool(VAR_3 VAR_1 STREQUAL VAR_2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...