#.rst: # # Provides safeguards against in-source builds and bad build types. # # Variables used:: # # PROJECT_SOURCE_DIR # PROJECT_BINARY_DIR # CMAKE_BUILD_TYPE # # Example autocmake.cfg entry:: # # [safeguards] # source: https://github.com/scisoft/autocmake/raw/master/modules/safeguards.cmake if(${PROJECT_SOURCE_DIR} STREQUAL ${PROJECT_BINARY_DIR}) message(FATAL_ERROR "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there.") endif() string(TOLOWER "${CMAKE_BUILD_TYPE}" cmake_build_type_tolower) string(TOUPPER "${CMAKE_BUILD_TYPE}" cmake_build_type_toupper) if( NOT cmake_build_type_tolower STREQUAL "debug" AND NOT cmake_build_type_tolower STREQUAL "release" AND NOT cmake_build_type_tolower STREQUAL "relwithdebinfo") message(FATAL_ERROR "Unknown build type \"${CMAKE_BUILD_TYPE}\". Allowed values are Debug, Release, RelWithDebInfo (case-insensitive).") endif()