Commit 53cd86ea authored by Robert Maynard's avatar Robert Maynard

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

parent c1d5d5eb
......@@ -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``).
......
......@@ -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_.
......
......@@ -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``.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment