Check out my first novel, midnight's simulacra!

CMake: Difference between revisions

From dankwiki
No edit summary
(holy fucking shit cmake sucks ass what the fuck)
Line 9: Line 9:
* Release -- optimized, no symbols
* Release -- optimized, no symbols
* MinSizeRel -- optimized for size
* MinSizeRel -- optimized for size
If <tt>CMAKE_BUILD_TYPE</tt> is not provided, none of these is used -- no debugging flags are set, and no optimization flags are set, in a somewhat stunning bit of unexpected behavior. The following snippet will ensure a default, and allow the value to be selected from a set in the gui:
<pre>
# Set a default build type if none was specified
set(default_build_type "Release")
if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
  set(default_build_type "Debug")
endif()
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
  message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
  set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
      STRING "Choose the type of build." FORCE)
  # Set the possible values of build type for cmake-gui
  set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
    "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()
</pre>