# Add a compiler flag only if it is accepted. # This macro is usually defined once and for all in a specific file which is included in the CMakeLists.txt in which # you need it. include(CheckCXXCompilerFlag) macro(add_cxx_compiler_flag _flag) string(REPLACE "-" "_" _flag_var ${_flag}) check_cxx_compiler_flag("${_flag}" CXX_COMPILER_${_flag_var}_OK) if(CXX_COMPILER_${_flag_var}_OK) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flag}") endif() endmacro() if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) message(STATUS "Setting build type to 'Debug' as none was specified.") set(CMAKE_BUILD_TYPE Debug 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() set(CMAKE_CXX_STANDARD 17 CACHE INTEGER "Version of the C++ standard to use") set(CMAKE_CXX_EXTENSIONS OFF CACHE BOOL "If ON the GNU version of the standard is used.")