Help: Clarify what 'aware' means as it relates to C++ standards

This commit is contained in:
Robert Maynard 2019-11-04 11:51:40 -05:00
parent c1d5d5eb11
commit 53cd86ea78
3 changed files with 15 additions and 15 deletions

View File

@ -90,21 +90,21 @@ Requiring Language Standards
In projects that use a large number of commonly available features from
a particular language standard (e.g. C++ 11) one may specify a
meta-feature (e.g. ``cxx_std_11``) that requires use of a compiler mode
aware of that standard. This is simpler than specifying all the
features individually, but does not guarantee the existence of any
particular feature. Diagnosis of use of unsupported features will be
delayed until compile time.
that is at minimum aware of that standard, but could be greater.
This is simpler than specifying all the features individually, but does
not guarantee the existence of any particular feature.
Diagnosis of use of unsupported features will be delayed until compile time.
For example, if C++ 11 features are used extensively in a project's
header files, then clients must use a compiler mode aware of C++ 11
or above. This can be requested with the code:
header files, then clients must use a compiler mode that is no less
than C++ 11. This can be requested with the code:
.. code-block:: cmake
target_compile_features(mylib PUBLIC cxx_std_11)
In this example, CMake will ensure the compiler is invoked in a mode
that is aware of C++ 11 (or above), adding flags such as
of at-least C++ 11 (or C++ 14, C++ 17, ...), adding flags such as
``-std=gnu++11`` if necessary. This applies to sources within ``mylib``
as well as any dependents (that may include headers from ``mylib``).

View File

@ -15,19 +15,19 @@ compile features and a list of supported compilers.
The features known to this version of CMake are:
``cxx_std_98``
Compiler mode is aware of C++ 98.
Compiler mode is at least C++ 98.
``cxx_std_11``
Compiler mode is aware of C++ 11.
Compiler mode is at least C++ 11.
``cxx_std_14``
Compiler mode is aware of C++ 14.
Compiler mode is at least C++ 14.
``cxx_std_17``
Compiler mode is aware of C++ 17.
Compiler mode is at least C++ 17.
``cxx_std_20``
Compiler mode is aware of C++ 20.
Compiler mode is at least C++ 20.
``cxx_aggregate_default_initializers``
Aggregate default initializers, as defined in N3605_.

View File

@ -14,13 +14,13 @@ compile features and a list of supported compilers.
The features known to this version of CMake are:
``c_std_90``
Compiler mode is aware of C 90.
Compiler mode is at least C 90.
``c_std_99``
Compiler mode is aware of C 99.
Compiler mode is at least C 99.
``c_std_11``
Compiler mode is aware of C 11.
Compiler mode is at least C 11.
``c_function_prototypes``
Function prototypes, as defined in ``ISO/IEC 9899:1990``.