summaryrefslogtreecommitdiffstats
path: root/Help
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2024-01-11 15:07:37 (GMT)
committerKitware Robot <kwrobot@kitware.com>2024-01-11 15:07:48 (GMT)
commitc6d69d84dbdf3e2db70e6272a95d977c2c685ee2 (patch)
treeb7ceaa5c1aa3dd8f101b7a7f1c5a3a9d8e7ec59d /Help
parent97713da65024c784cc759278e5a4ebc79a74f111 (diff)
parentfa00928bcded97d20c9aa2813f68f1df41591125 (diff)
downloadCMake-c6d69d84dbdf3e2db70e6272a95d977c2c685ee2.zip
CMake-c6d69d84dbdf3e2db70e6272a95d977c2c685ee2.tar.gz
CMake-c6d69d84dbdf3e2db70e6272a95d977c2c685ee2.tar.bz2
Merge topic 'file-strings-regex-match'
fa00928bcd file: `STRINGS` + `REGEX` store match results ff0085cf74 Help: Drop incorrect versionadded mark from CMAKE_MATCH_<n> Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !9124
Diffstat (limited to 'Help')
-rw-r--r--Help/command/file.rst5
-rw-r--r--Help/manual/cmake-policies.7.rst1
-rw-r--r--Help/policy/CMP0159.rst24
-rw-r--r--Help/variable/CMAKE_MATCH_n.rst2
4 files changed, 30 insertions, 2 deletions
diff --git a/Help/command/file.rst b/Help/command/file.rst
index 957b8b5..4acdc7e 100644
--- a/Help/command/file.rst
+++ b/Help/command/file.rst
@@ -113,6 +113,11 @@ Reading
Consider only strings that match the given regular expression,
as described under :ref:`string(REGEX) <Regex Specification>`.
+ .. versionchanged:: 3.29
+ Capture groups from the last match in the file are stored in
+ :variable:`CMAKE_MATCH_<n>`, similar to
+ :command:`string(REGEX MATCHALL)`. See policy :policy:`CMP0159`.
+
``ENCODING <encoding-type>``
.. versionadded:: 3.1
diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst
index 35b4497..2bb4f2f 100644
--- a/Help/manual/cmake-policies.7.rst
+++ b/Help/manual/cmake-policies.7.rst
@@ -57,6 +57,7 @@ Policies Introduced by CMake 3.29
.. toctree::
:maxdepth: 1
+ CMP0159: file(STRINGS) with REGEX updates CMAKE_MATCH_<n>. </policy/CMP0159>
CMP0158: add_test() honors CMAKE_CROSSCOMPILING_EMULATOR only when cross-compiling. </policy/CMP0158>
CMP0157: Swift compilation mode is selected by an abstraction. </policy/CMP0157>
CMP0156: De-duplicate libraries on link lines based on linker capabilities. </policy/CMP0156>
diff --git a/Help/policy/CMP0159.rst b/Help/policy/CMP0159.rst
new file mode 100644
index 0000000..2d05282
--- /dev/null
+++ b/Help/policy/CMP0159.rst
@@ -0,0 +1,24 @@
+CMP0159
+-------
+
+.. versionadded:: 3.29
+
+:command:`file(STRINGS)` with ``REGEX`` updates :variable:`CMAKE_MATCH_<n>`.
+
+In CMake 3.28 and below the :command:`file(STRINGS)` command's ``REGEX``
+option does not affect :variable:`CMAKE_MATCH_<n>` variables. CMake 3.29
+and above prefer to update the :variable:`CMAKE_MATCH_<n>` variables using
+captures from the last match in the file, similar to the
+:command:`string(REGEX MATCHALL)` command. This policy provides
+compatibility for projects that have not been updated to expect the behavior.
+
+The ``OLD`` behavior for this policy is for :command:`file(STRINGS)` with
+``REGEX`` to not store capture groups in :variable:`CMAKE_MATCH_<n>`
+variables. The ``NEW`` behavior is to store the capture groups.
+
+This policy was introduced in CMake version 3.29. Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt
diff --git a/Help/variable/CMAKE_MATCH_n.rst b/Help/variable/CMAKE_MATCH_n.rst
index a92788e..c7dd623 100644
--- a/Help/variable/CMAKE_MATCH_n.rst
+++ b/Help/variable/CMAKE_MATCH_n.rst
@@ -1,8 +1,6 @@
CMAKE_MATCH_<n>
---------------
-.. versionadded:: 3.9
-
Capture group ``<n>`` matched by the last regular expression, for groups
0 through 9. Group 0 is the entire match. Groups 1 through 9 are the
subexpressions captured by ``()`` syntax.