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 中删除。