Wou*_*rvD 14 regex string cmake backslash
我试图用反斜杠替换forwardslashes.要做到这一点,我有以下代码行:
STRING(REGEX REPLACE "/" "\\" SourceGroup ${SourceGroupPath} )
Run Code Online (Sandbox Code Playgroud)
SourceGroupPath = A/File/Path.SourceGroup是将结果设置为的变量.
我遇到的问题是代码的"\\"部分.我已经尝试了几种方法来使用反斜杠文字,如"\\"和使用unicode,但似乎没有任何工作.
我在CMake中遇到的错误是:
CMakeLists.txt处的CMake错误:41(STRING):字符串子命令REGEX,mode REPLACE:replace-expression以反斜杠结尾.
有人可以帮帮我吗?
谢谢,
沃特
Tom*_*lak 24
其原因是,在CMake的字符串中,反斜杠是一个转义字符(就像在了C,Java或JavaScript)和正则表达式,反斜杠是一个转义字符,以及.
因此,要将正则表达式表示为字符串文字,您需要双重转义.(这就是为什么许多"更高级别"的语言都有正则表达式字面符号,BTW.)
字符串文字"\\"
表示内存中的字符串"\"
,这是一个无效的正则表达式,因此"以反斜杠结尾"错误.
字符串文字"\\\\"
表示"\\"
在内存中,它是有效的正则表达式(表示单个反斜杠).
lgw*_*est 11
这是一种更简单的方法
file(TO_NATIVE_PATH ${MYPATH} MYPATH)
Run Code Online (Sandbox Code Playgroud)