summaryrefslogtreecommitdiff
path: root/Help
diff options
context:
space:
mode:
Diffstat (limited to 'Help')
-rw-r--r--Help/command/file.rst6
-rw-r--r--Help/manual/cmake-policies.7.rst1
-rw-r--r--Help/policy/CMP0111.rst20
-rw-r--r--Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst142
-rw-r--r--Help/release/3.18.rst13
-rw-r--r--Help/release/dev/file-generate-target.rst5
-rw-r--r--Help/release/dev/imported-target-location-required.rst5
7 files changed, 133 insertions, 59 deletions
diff --git a/Help/command/file.rst b/Help/command/file.rst
index 2cf938b9d2..953172b0bd 100644
--- a/Help/command/file.rst
+++ b/Help/command/file.rst
@@ -449,7 +449,7 @@ modified.
file(GENERATE OUTPUT output-file
<INPUT input-file|CONTENT content>
- [CONDITION expression])
+ [CONDITION expression] [TARGET target])
Generate an output file for each build configuration supported by the current
:manual:`CMake Generator <cmake-generators(7)>`. Evaluate
@@ -479,6 +479,10 @@ from the input content to produce the output content. The options are:
with respect to the value of :variable:`CMAKE_CURRENT_BINARY_DIR`.
See policy :policy:`CMP0070`.
+``TARGET <target>``
+ Specify target which to use when evaluating generator expressions. Enables
+ use of generator expressions requiring a target.
+
Exactly one ``CONTENT`` or ``INPUT`` option must be given. A specific
``OUTPUT`` file may be named by at most one invocation of ``file(GENERATE)``.
Generated files are modified and their timestamp updated on subsequent cmake
diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst
index 2627e0c41f..ce8969b600 100644
--- a/Help/manual/cmake-policies.7.rst
+++ b/Help/manual/cmake-policies.7.rst
@@ -57,6 +57,7 @@ Policies Introduced by CMake 3.19
.. toctree::
:maxdepth: 1
+ CMP0111: An imported target with a missing location fails during generation. </policy/CMP0111>
CMP0110: add_test() supports arbitrary characters in test names. </policy/CMP0110>
CMP0109: find_program() requires permission to execute but not to read. </policy/CMP0109>
diff --git a/Help/policy/CMP0111.rst b/Help/policy/CMP0111.rst
new file mode 100644
index 0000000000..37e5ad56b0
--- /dev/null
+++ b/Help/policy/CMP0111.rst
@@ -0,0 +1,20 @@
+CMP0111
+-------
+
+.. versionadded:: 3.19
+
+An imported target with a missing location fails during generation.
+
+Prior to this the location would be generated as ``<TARGET_NAME>-NOTFOUND``,
+which would result in build failures.
+
+The ``OLD`` behavior of this policy is to generate the location of an imported
+unknown, static or shared library target as ``<TARGET_NAME>-NOTFOUND`` if not
+set.
+The ``NEW`` behavior is to raise an error.
+
+This policy was introduced in CMake version 3.19. CMake version |release|
+warns when the policy is not set and uses ``OLD`` behavior. Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst
index 9b532828da..bac32744b6 100644
--- a/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -13,8 +13,14 @@ The features listed here may be used with the :command:`target_compile_features`
command. See the :manual:`cmake-compile-features(7)` manual for information on
compile features and a list of supported compilers.
+The features known to this version of CMake are listed below.
-The features known to this version of CMake are:
+High level meta features indicating C++ standard support
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The following meta features indicate general support for the associated
+language standard. It reflects the language support claimed by the compiler,
+but it does not necessarily imply complete conformance to that standard.
``cxx_std_98``
Compiler mode is at least C++ 98.
@@ -31,10 +37,29 @@ The features known to this version of CMake are:
``cxx_std_20``
Compiler mode is at least C++ 20.
-``cxx_aggregate_default_initializers``
- Aggregate default initializers, as defined in N3605_.
- .. _N3605: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3605.html
+Low level individual compile features
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+For C++ 11 and C++ 14, compilers were sometimes slow to implement certain
+language features. CMake provided some individual compile features to help
+projects determine whether specific features were available. These individual
+features are now less relevant and projects should generally prefer to use the
+high level meta features instead. Individual compile features are not provided
+for C++ 17 or later.
+
+See the :manual:`cmake-compile-features(7)` manual for further discussion of
+the use of individual compile features.
+
+Individual features from C++ 98
+"""""""""""""""""""""""""""""""
+
+``cxx_template_template_parameters``
+ Template template parameters, as defined in ``ISO/IEC 14882:1998``.
+
+
+Individual features from C++ 11
+"""""""""""""""""""""""""""""""
``cxx_alias_templates``
Template aliases, as defined in N2258_.
@@ -56,30 +81,16 @@ The features known to this version of CMake are:
.. _N2761: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf
-``cxx_attribute_deprecated``
- ``[[deprecated]]`` attribute, as defined in N3760_.
-
- .. _N3760: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3760.html
-
``cxx_auto_type``
Automatic type deduction, as defined in N1984_.
.. _N1984: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf
-``cxx_binary_literals``
- Binary literals, as defined in N3472_.
-
- .. _N3472: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3472.pdf
-
``cxx_constexpr``
Constant expressions, as defined in N2235_.
.. _N2235: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
-``cxx_contextual_conversions``
- Contextual conversions, as defined in N3323_.
-
- .. _N3323: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3323.pdf
``cxx_decltype_incomplete_return_types``
Decltype on incomplete return types, as defined in N3276_.
@@ -91,11 +102,6 @@ The features known to this version of CMake are:
.. _N2343: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf
-``cxx_decltype_auto``
- ``decltype(auto)`` semantics, as defined in N3638_.
-
- .. _N3638: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3638.html
-
``cxx_default_function_template_args``
Default template arguments for function templates, as defined in DR226_
@@ -121,11 +127,6 @@ The features known to this version of CMake are:
.. _N2346: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
-``cxx_digit_separators``
- Digit separators, as defined in N3781_.
-
- .. _N3781: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3781.pdf
-
``cxx_enum_forward_declarations``
Enum forward declarations, as defined in N2764_.
@@ -163,11 +164,6 @@ The features known to this version of CMake are:
.. _N2672: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
-``cxx_generic_lambdas``
- Generic lambdas, as defined in N3649_.
-
- .. _N3649: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3649.html
-
``cxx_inheriting_constructors``
Inheriting constructors, as defined in N2540_.
@@ -183,11 +179,6 @@ The features known to this version of CMake are:
.. _N2927: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf
-``cxx_lambda_init_captures``
- Initialized lambda captures, as defined in N3648_.
-
- .. _N3648: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3648.html
-
``cxx_local_type_template_args``
Local and unnamed types as template arguments, as defined in N2657_.
@@ -236,16 +227,6 @@ The features known to this version of CMake are:
.. _N2439: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
-``cxx_relaxed_constexpr``
- Relaxed constexpr, as defined in N3652_.
-
- .. _N3652: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3652.html
-
-``cxx_return_type_deduction``
- Return type deduction on normal functions, as defined in N3386_.
-
- .. _N3386: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3386.html
-
``cxx_right_angle_brackets``
Right angle bracket parsing, as defined in N1757_.
@@ -301,11 +282,6 @@ The features known to this version of CMake are:
.. _N2765: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf
-``cxx_variable_templates``
- Variable templates, as defined in N3651_.
-
- .. _N3651: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3651.pdf
-
``cxx_variadic_macros``
Variadic macros, as defined in N1653_.
@@ -316,5 +292,61 @@ The features known to this version of CMake are:
.. _N2242: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf
-``cxx_template_template_parameters``
- Template template parameters, as defined in ``ISO/IEC 14882:1998``.
+
+Individual features from C++ 14
+"""""""""""""""""""""""""""""""
+
+``cxx_aggregate_default_initializers``
+ Aggregate default initializers, as defined in N3605_.
+
+ .. _N3605: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3605.html
+
+``cxx_attribute_deprecated``
+ ``[[deprecated]]`` attribute, as defined in N3760_.
+
+ .. _N3760: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3760.html
+
+``cxx_binary_literals``
+ Binary literals, as defined in N3472_.
+
+ .. _N3472: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3472.pdf
+
+``cxx_contextual_conversions``
+ Contextual conversions, as defined in N3323_.
+
+ .. _N3323: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3323.pdf
+
+``cxx_decltype_auto``
+ ``decltype(auto)`` semantics, as defined in N3638_.
+
+ .. _N3638: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3638.html
+
+``cxx_digit_separators``
+ Digit separators, as defined in N3781_.
+
+ .. _N3781: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3781.pdf
+
+``cxx_generic_lambdas``
+ Generic lambdas, as defined in N3649_.
+
+ .. _N3649: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3649.html
+
+``cxx_lambda_init_captures``
+ Initialized lambda captures, as defined in N3648_.
+
+ .. _N3648: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3648.html
+
+``cxx_relaxed_constexpr``
+ Relaxed constexpr, as defined in N3652_.
+
+ .. _N3652: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3652.html
+
+``cxx_return_type_deduction``
+ Return type deduction on normal functions, as defined in N3386_.
+
+ .. _N3386: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3386.html
+
+``cxx_variable_templates``
+ Variable templates, as defined in N3651_.
+
+ .. _N3651: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3651.pdf
diff --git a/Help/release/3.18.rst b/Help/release/3.18.rst
index f199244c0a..099e9b57e5 100644
--- a/Help/release/3.18.rst
+++ b/Help/release/3.18.rst
@@ -265,8 +265,9 @@ Other
environment variable to customize colors.
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
- is now aware of the availability of C11 features in MSVC 19.27 and above,
- including support for the ``c_restrict`` feature and the ``-std:c11`` flag.
+ is now aware of the availability of C11 features in MSVC 19.27 and 19.28,
+ including support for the ``c_restrict``, ``c_static_assert`` features and
+ the ``-std:c11`` flag.
Deprecated and Removed Features
===============================
@@ -353,4 +354,10 @@ Changes made since CMake 3.18.0 include the following.
This restores compatibility with behavior of CMake 3.15 and below.
* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
- was updated for MSVC 19.27 as mentioned above.
+ was updated for MSVC 19.27 as mentioned above (``c_restrict``).
+
+3.18.3
+------
+
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
+ was updated for MSVC 19.28 as mentioned above (``c_static_assert``).
diff --git a/Help/release/dev/file-generate-target.rst b/Help/release/dev/file-generate-target.rst
new file mode 100644
index 0000000000..09fb460a71
--- /dev/null
+++ b/Help/release/dev/file-generate-target.rst
@@ -0,0 +1,5 @@
+file-generate-target
+--------------------
+
+* The :command:`file(GENERATE)` command gained a new ``TARGET`` keyword to
+ support resolving target-dependent generator expressions.
diff --git a/Help/release/dev/imported-target-location-required.rst b/Help/release/dev/imported-target-location-required.rst
new file mode 100644
index 0000000000..3625242d63
--- /dev/null
+++ b/Help/release/dev/imported-target-location-required.rst
@@ -0,0 +1,5 @@
+imported-target-location-required
+---------------------------------
+
+* An imported target with a missing location now fails during generation if the
+ location is used. See policy :policy:`CMP0111`.