Всем доброго времени.
Имею 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} )
У тебя всегда срабатывает 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)
...
Ну да, в принципе это тоже самое что и "переливание из пустого в порожнее" (с) ...
Хотелось бы чего-то другого, но наверное это невозможно.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)