MantisBT - CMake
View Issue Details
0016017CMakeCMakepublic2016-03-14 10:372016-06-10 14:21
Abai 
 
normalmajoralways
closedno change required 
Apple MacOSX10.11.3
CMake 3.5 
 
0016017: Setting OPTION to ON results in FALSE
It seems that setting an arbitrary option to ON results in variable to be set to OFF instead. I am certain that the variable is not cached too. See the example below to reproduce.

Here is the output from the attached CMakeLists.txt:

-- The C compiler identification is AppleClang 7.0.2.7000181
-- The CXX compiler identification is AppleClang 7.0.2.7000181
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- WAX is not defined.
-- Setting WAX=ON.
-- Results in WAX=OFF
-- Configuring done
-- Generating done

The only workaround I found around is (FORCE is required even with empty cache):

SET(WAX ON CACHE BOOL "" FORCE)
PROJECT(OPTION_BUG)

CMAKE_MINIMUM_REQUIRED(VERSION 3.5.0 FATAL_ERROR)

IF(NOT DEFINED WAX)
    MESSAGE(STATUS "WAX is not defined.")
ENDIF()
MESSAGE(STATUS "Setting WAX=ON.")
OPTION(WAX ON)
MESSAGE(STATUS "Results in WAX=${WAX}")
CMake version 3.5.0 installed with home-brew on OSX 10.11.3
No tags attached.
txt CMakeLists.txt (231) 2016-03-14 10:37
https://public.kitware.com/Bug/file/5644/CMakeLists.txt
Issue History
2016-03-14 10:37AbaiNew Issue
2016-03-14 10:37AbaiFile Added: CMakeLists.txt
2016-03-14 10:46Brad KingNote Added: 0040672
2016-03-14 10:47Brad KingStatusnew => resolved
2016-03-14 10:47Brad KingResolutionopen => no change required
2016-03-14 10:57AbaiNote Added: 0040677
2016-06-10 14:21Kitware RobotNote Added: 0041230
2016-06-10 14:21Kitware RobotStatusresolved => closed

Notes
(0040672)
Brad King   
2016-03-14 10:46   
The option() command signature is documented here:

  https://cmake.org/cmake/help/v3.5/command/option.html [^]

The second argument is a documentation string. The third argument is the default value, if any, and the default default is OFF. Therefore the code

  option(WAX ON)

creates an option called "WAX" whose documentation is "ON" and whose default value is "OFF".
(0040677)
Abai   
2016-03-14 10:57   
Ah, my bad. Thank you!

I guess it's a common misunderstanding as I have seen a few others making the same mistake.
(0041230)
Kitware Robot   
2016-06-10 14:21   
This issue tracker is no longer used. Further discussion of this issue may take place in the current CMake Issues page linked in the banner at the top of this page.