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

时间:2018-02-15 10:59:37

标签: regex cmake

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

我写过:

IF(CMAKE_SOURCE_DIR MATCHES "*MyFolderName")
# code
ENDIF(CMAKE_SOURCE_DIR MATCHES "*MyFolderName")

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

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

我是否可以这样做以修复比赛?

2 个答案:

答案 0 :(得分:5)

通常,在正则表达式中,“*”表示“重复前0次或更多次”。 CMake也不例外。要在字符串末尾进行匹配,请使用$

CMAKE_SOURCE_DIR MATCHES "MyFolderName$"

CMake正则表达式被描述为here

答案 1 :(得分:2)

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

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

甚至可以尝试:.*/MyFolderName。但它也匹配/some/MyFolderName/path ...使用.*/MyFolderName$匹配最后一个路径名组件。