Skip to content

Unnecessary check for CMAKE_BUILD_TYPE #311

Closed
@kevinbeck76

Description

@kevinbeck76

The check in the top-level CMakeLists.txt:

elseif(NOT (${CMAKE_BUILD_TYPE} STREQUAL "Release" OR ${CMAKE_BUILD_TYPE} STREQUAL "Debug" ))MESSAGE(SEND_ERROR "CMAKE_BUILD_TYPE must be either Release or Debug")

is unnecessary and breaks builds that use CMake build types other than Release or Debug (RelWithDebInfo, release, RELEASE, etc.). The code builds just fine without this check.

According to the documentation CMAKE_BUILD_TYPE names are case-insensitive. We use release or debug in our environment and the check above fails. This is the only package of the 20+ packages that we use that has any checking of the CMAKE_BUILD_TYPE.

CMAKE_BUILD_TYPE
Specifies the build type on single-configuration generators.

This statically specifies what build type (configuration) will be built in this build tree. Possible values are empty, Debug, Release, RelWithDebInfo, MinSizeRel, ... This variable is only meaningful to single-configuration generators (such as Makefile Generators and Ninja) i.e. those which choose a single configuration when CMake runs to generate a build tree as opposed to multi-configuration generators which offer selection of the build configuration within the generated build environment. There are many per-config properties and variables (usually following clean SOME_VAR_ order conventions), such as CMAKE_C_FLAGS_, specified as uppercase: CMAKE_C_FLAGS_[DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL|...]. For example, in a build tree configured to build type Debug, CMake will see to having CMAKE_C_FLAGS_DEBUG settings get added to the CMAKE_C_FLAGS settings. See also CMAKE_CONFIGURATION_TYPES.

<Note that configuration names are case-insensitive. The value of this variable will be the same as it is specified when invoking CMake. For instance, if -DCMAKE_BUILD_TYPE=ReLeAsE is specified, then the value of CMAKE_BUILD_TYPE will be ReLeAsE.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions