CMP0186

在 4.1 版本中新增。

正则表达式在重复搜索中最多匹配 ^ 一次。

此策略影响执行多次正则表达式搜索的命令

以及生成器表达式 $<LIST:TRANSFORM,list,REPLACE>

CMake 4.0 及更早版本在每次后续搜索的开头都匹配 ^ 锚点,导致多次匹配

string(REGEX REPLACE "^a" "b" result "aaaa") # result="bbbb"
string(REGEX MATCHALL "^a" result "aaaa")    # result="a;a;a;a"

CMake 4.1 及更高版本更倾向于在输入字符串的开头最多匹配 ^ 锚点一次

string(REGEX REPLACE "^a" "b" result "aaaa") # result="abbb"
string(REGEX MATCHALL "^a" result "aaaa")    # result="a"

此策略为尚未更新的项目提供兼容性。

此策略的 OLD 行为是在每次搜索的开头多次匹配 ^。此策略的 NEW 行为是在输入字符串的开头最多匹配 ^ 一次。

此策略是在 CMake 版本 4.1 中引入的。它可以由 cmake_policy()cmake_minimum_required() 命令设置。如果未设置,CMake **不会** 警告,并使用 OLD 行为。

注意

策略的 OLD 行为根据定义已被弃用,并可能在未来版本的 CMake 中被移除。