我想检查
CMAKE_SOURCE_DIR
变量是否以特定名称结尾。我需要使用 MATCHES
来实现它,但它似乎不起作用。
我写过:
if(CMAKE_SOURCE_DIR MATCHES "*MyFolderName")
# code
endif()
但这不起作用。我收到以下错误:
RegularExpression::compile(): ?+* follows nothing.
RegularExpression::compile(): Error in compile
我该怎么做才能修复比赛?
通常,在正则表达式中“*”表示“重复前面零次或多次”。 CMake 也不例外。要匹配字符串的结尾,请使用
$
:
CMAKE_SOURCE_DIR MATCHES "MyFolderName$"
CMake 正则表达式描述于here。
MATCH
需要正则表达式,而不是“文件 glob”(通配符)。
if(CMAKE_SOURCE_DIR MATCHES ".*MyFolderName")
# ...
endif()
或者甚至尝试这个:
.*/MyFolderName
。但它也会匹配 /some/MyFolderName/path
...使用 .*/MyFolderName$
来匹配最后一个路径名组件。