我想检查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
我是否可以这样做以修复比赛?
答案 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$
匹配最后一个路径名组件。