[CMake] What is the default build type?

Florian Lindner mailinglists at xgm.de
Wed Aug 2 00:57:36 EDT 2017


Hi,

Am 01.08.2017 um 16:59 schrieb J Decker:
> I like having something like this.... defines CMAKE_BUILD_TYPE to be a droplist of choices...
> 
> ----
> 
> if( NOT CMAKE_CONFIGURATION_TYPES )
> set( CMAKE_CONFIGURATION_TYPES debug release )
> endif( NOT CMAKE_CONFIGURATION_TYPES )
> 
> set( CMAKE_BUILD_TYPE release CACHE STRING "Cached cmake build type"  )
> set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )

The droplist is really cool! Can't understand why it's not the default this way.

https://cmake.org/cmake/help/v3.0/variable/CMAKE_CONFIGURATION_TYPES.html says "This has reasonable defaults on most
platforms...", but when I message(${CMAKE_CONFIGURATION_TYPES}) it is empty. Why that?

That code also does not seem to set the default:

if(NOT CMAKE_CONFIGURATION_TYPES)
  set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo)
endif()

set(CMAKE_BUILD_TYPE Debug CACHE STRING "Build Type")
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )

So the first commands set the cached value of the string "Build type". The second commands sets the property STRINGS of
the variable CMAKE_BUILD_TYPE. Is that correct?


# if (NOT CMAKE_BUILD_TYPE)
#   set(CMAKE_BUILD_TYPE Debug)

Uncommenting this sets the default non builds with cmake, but not on ccmake (at least not in the GUI).

# endif()
message(STATUS "Build configuration: " ${CMAKE_BUILD_TYPE})


Best Thanks,
Florian

> 
> 
> -----
> 
> https://cmake.org/cmake/help/v3.0/variable/CMAKE_CONFIGURATION_TYPES.html
> 
> On Mon, Jul 31, 2017 at 9:28 PM, Michael Ellery <mellery451 at gmail.com <mailto:mellery451 at gmail.com>> wrote:
> 
> 
> 
>     > On Jul 31, 2017, at 8:48 PM, Florian Lindner <mailinglists at xgm.de <mailto:mailinglists at xgm.de>> wrote:
>     >
>     > Hello
>     >
>     > ccmake shows CMAKE_BUILD_TYPE as unset. From the compile commands it looks like also nothing like Debug nor Release.
>     >
>     > Why is there no well-defined default set? How can I set a default?
>     >
>     > Thanks,
>     > Florian
>     > --
>     >
>     > Powered by www.kitware.com <http://www.kitware.com>
>     >
>     > Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>     <http://www.cmake.org/Wiki/CMake_FAQ>
>     >
>     > Kitware offers various services to support the CMake community. For more information on each offering, please visit:
>     >
>     > CMake Support: http://cmake.org/cmake/help/support.html <http://cmake.org/cmake/help/support.html>
>     > CMake Consulting: http://cmake.org/cmake/help/consulting.html <http://cmake.org/cmake/help/consulting.html>
>     > CMake Training Courses: http://cmake.org/cmake/help/training.html <http://cmake.org/cmake/help/training.html>
>     >
>     > Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>     <http://www.kitware.com/opensource/opensource.html>
>     >
>     > Follow this link to subscribe/unsubscribe:
>     > http://public.kitware.com/mailman/listinfo/cmake <http://public.kitware.com/mailman/listinfo/cmake>
> 
> 
>     my recollection is that an unspecified build type results in a build that has no optimizations and no debug symbols
>     generated. I’m not sure what the motivation for those default flags is. If you want to default to DEBUG, something
>     like this should work:
> 
>         if (NOT CMAKE_BUILD_TYPE)
>           set(CMAKE_BUILD_TYPE Debug)
>         endif()
> 
> 
>     -MIke
> 
>     --
> 
>     Powered by www.kitware.com <http://www.kitware.com>
> 
>     Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>     <http://www.cmake.org/Wiki/CMake_FAQ>
> 
>     Kitware offers various services to support the CMake community. For more information on each offering, please visit:
> 
>     CMake Support: http://cmake.org/cmake/help/support.html <http://cmake.org/cmake/help/support.html>
>     CMake Consulting: http://cmake.org/cmake/help/consulting.html <http://cmake.org/cmake/help/consulting.html>
>     CMake Training Courses: http://cmake.org/cmake/help/training.html <http://cmake.org/cmake/help/training.html>
> 
>     Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>     <http://www.kitware.com/opensource/opensource.html>
> 
>     Follow this link to subscribe/unsubscribe:
>     http://public.kitware.com/mailman/listinfo/cmake <http://public.kitware.com/mailman/listinfo/cmake>
> 
> 


More information about the CMake mailing list