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