Skip to content

Instantly share code, notes, and snippets.

@kbenzie
Last active October 7, 2015 15:47
Show Gist options
  • Save kbenzie/ee3f75341fe6f69295ff to your computer and use it in GitHub Desktop.
Save kbenzie/ee3f75341fe6f69295ff to your computer and use it in GitHub Desktop.
Add ReleaseAssert build type to CMake
if(UNIX)
string(REPLACE "-DNDEBUG" ""
CMAKE_C_FLAGS_RELEASEASSERT ${CMAKE_C_FLAGS_RELEASE})
string(REPLACE "-DNDEBUG" ""
CMAKE_CXX_FLAGS_RELEASEASSERT ${CMAKE_CXX_FLAGS_RELEASE})
elseif(WIN32)
string(REPLACE "/D NDEBUG" ""
CMAKE_C_FLAGS_RELEASEASSERT ${CMAKE_C_FLAGS_RELEASE})
string(REPLACE "/D NDEBUG" ""
CMAKE_CXX_FLAGS_RELEASEASSERT ${CMAKE_CXX_FLAGS_RELEASE})
endif()
string(STRIP ${CMAKE_C_FLAGS_RELEASEASSERT} CMAKE_C_FLAGS_RELEASEASSERT)
string(STRIP ${CMAKE_CXX_FLAGS_RELEASEASSERT} CMAKE_CXX_FLAGS_RELEASEASSERT)
set(CMAKE_C_FLAGS_RELEASEASSERT
${CMAKE_C_FLAGS_RELEASEASSERT} CACHE STRING
"Flags used by the compiler during release assert builds." FORCE)
set(CMAKE_CXX_FLAGS_RELEASEASSERT
${CMAKE_CXX_FLAGS_RELEASEASSERT} CACHE STRING
"Flags used by the compiler during release assert builds." FORCE)
set(CMAKE_EXE_LINKER_FLAGS_RELEASEASSERT
${CMAKE_EXE_LINKER_FLAGS_RELEASE} CACHE STRING
"Flags used by the linker during release assert builds." FORCE)
set(CMAKE_MODULE_LINKER_FLAGS_RELEASEASSERT
${CMAKE_MODULE_LINKER_FLAGS_RELEASE} CACHE STRING
"Flags used by the linker during release assert builds." FORCE)
set(CMAKE_SHARED_LINKER_FLAGS_RELEASEASSERT
${CMAKE_SHARED_LINKER_FLAGS_RELEASE} CACHE STRING
"Flags used by the linker during release assert builds." FORCE)
set(CMAKE_STATIC_LINKER_FLAGS_RELEASEASSERT
${CMAKE_STATIC_LINKER_FLAGS_RELEASE} CACHE STRING
"Flags used by the linker during release assert builds." FORCE)
set(CMAKE_CONFIGURATION_TYPES ${CMAKE_CONFIGURATION_TYPES} ReleaseAssert
CACHE STRING "" FORCE)
list(REMOVE_DUPLICATES CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING
"Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel ReleaseAssert."
FORCE)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment