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