在 CMake 中检查字符串是否以名称结尾

问题描述 投票:0回答:2

我想检查

CMAKE_SOURCE_DIR
变量是否以特定名称结尾。我需要使用
MATCHES
来实现它,但它似乎不起作用。

我写过:

if(CMAKE_SOURCE_DIR MATCHES "*MyFolderName")
# code
endif()

但这不起作用。我收到以下错误:

RegularExpression::compile(): ?+* follows nothing.
RegularExpression::compile(): Error in compile

我该怎么做才能修复比赛?

regex cmake
2个回答
40
投票

通常,在正则表达式中“*”表示“重复前面零次或多次”。 CMake 也不例外。要匹配字符串的结尾,请使用

$
:

CMAKE_SOURCE_DIR MATCHES "MyFolderName$"

CMake 正则表达式描述于here


7
投票

MATCH
需要正则表达式,而不是“文件 glob”(通配符)。

if(CMAKE_SOURCE_DIR MATCHES ".*MyFolderName")
   # ...
endif()

或者甚至尝试这个:

.*/MyFolderName
。但它也会匹配
/some/MyFolderName/path
...使用
.*/MyFolderName$
来匹配最后一个路径名组件。

© www.soinside.com 2019 - 2024. All rights reserved.