crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> CMake. Присвоение значений логическим переменным.
kuzulis
  опции профиля:
сообщение 26.10.2010, 13:51
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 393
Регистрация: 29.6.2009
Пользователь №: 862

Спасибо сказали: 36 раз(а)




Репутация:   7  


Всем доброго времени.

Имею CMakeLists.txt
set( APP_TARGET test )
project( ${APP_TARGET} )
cmake_minimum_required( VERSION 2.6.0 )

option( OPTION1 "Option1" OFF )
option( OPTION2 "Option2" OFF )
option( OPTION3 "Option3" OFF )

set( LOGICAL_RESULT OPTION1 OR OPTION2 OR OPTION3 )

if( LOGICAL_RESULT )
    message( STATUS "Logical OR True" )
else( LOGICAL_RESULT )  
    message( STATUS "Logical OR False" )
endif( LOGICAL_RESULT )

set( APP_SRCS main.cpp )
add_executable( ${APP_TARGET} ${APP_SRCS} )
target_link_libraries( ${APP_TARGET} )


Мне в нём нужно создать переменную LOGICAL_RESULT которая имела бы значение логического выражения OPTION1 + OPTION2 + OPTION3 и которую я бы подставил в конструкцию if/else/endif.
В принципе, я мог бы в if/else/endif подставить OPTION1 OR OPTION2 OR OPTION3 и всё бы работало.. НО! Если переменных OPTION1 ... OPTIONN десять/сто штук, то if/else/endif невозможно будет найти видуально в этом мусоре.

Подскажите, как лучше поступить ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 26.10.2010, 15:01
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


У тебя всегда срабатывает if( LOGICAL_RESULT ) потому что переменная LOGICAL_RESULT содержит список "OPTION1 OR OPTION2 OR OPTION3", т.е. не пустая. Проверить можно добавив message(STATUS "LOGICAL_RESULT ${LOGICAL_RESULT}")

Можно сделать так:
option( OPTION1 "Option1" OFF )
option( OPTION2 "Option2" OFF )
option( OPTION3 "Option3" OFF )

if (OPTION1 OR OPTION2 OR OPTION3)
    set( LOGICAL_RESULT TRUE)
endif (OPTION1 OR OPTION2 OR OPTION3)

...

может и не очень красиво но работает.

Сообщение отредактировал igor_bogomolov - 26.10.2010, 15:56
Причина редактирования: не цитируй целыми сообщениями, тем более такими длинными
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 26.10.2010, 15:40
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 393
Регистрация: 29.6.2009
Пользователь №: 862

Спасибо сказали: 36 раз(а)




Репутация:   7  


Ну да, в принципе это тоже самое что и "переливание из пустого в порожнее" (с) ...
Хотелось бы чего-то другого, но наверное это невозможно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.9.2020, 12:15