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 版本中被移除。