# <LANG>_STANDARD_REQUIRED

The variations are:

- `C_STANDARD_REQUIRED`

- `CXX_STANDARD_REQUIRED`

- `CUDA_STANDARD_REQUIRED`

- `HIP_STANDARD_REQUIRED`

- `OBJC_STANDARD_REQUIRED`

- `OBJCXX_STANDARD_REQUIRED`

These properties specify whether the value of `<LANG>_STANDARD` is a requirement. When false or unset, the `<LANG>_STANDARD` target property is treated as optional and may "decay" to a previous standard if the requested standard is not available. When `<LANG>_STANDARD_REQUIRED` is set to true, `<LANG>_STANDARD` becomes a hard requirement and a fatal error will be issued if that requirement cannot be met.

Note that the actual language standard used may be higher than that specified by `<LANG>_STANDARD`, regardless of the value of `<LANG>_STANDARD_REQUIRED`. In particular, transitive usage requirements or the use of `compile features` can raise the required language standard above what `<LANG>_STANDARD` specifies.

These properties are initialized by the value of the `CMAKE_<LANG>_STANDARD_REQUIRED` variable if it is set when a target is created.

See the `cmake-compile-features(7)` manual for information on compile features and a list of supported compilers.