crossplatform.ru

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


  Ответ в CMake. Присвоение значений логическим переменным.
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kuzulis Дата 26.10.2010, 15:40
  Ну да, в принципе это тоже самое что и "переливание из пустого в порожнее" (с) ...
Хотелось бы чего-то другого, но наверное это невозможно.
Sokoloff Дата 26.10.2010, 15:01
  У тебя всегда срабатывает 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)

...

может и не очень красиво но работает.
kuzulis Дата 26.10.2010, 13:51
  Всем доброго времени.

Имею 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 невозможно будет найти видуально в этом мусоре.

Подскажите, как лучше поступить ?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 13:11