我正在尝试使用regexp从cmake文件中获取文件信息。这是一个简单的file.txt,位于我的主目录中:
entry1
entry2
在CMake中,我通过以下方式致电grep:
SET(GREP_ARGS -oP \".*$\" /home/yuriy/file.txt)
MESSAGE(STATUS ${GREP_ARGS})
EXECUTE_PROCESS(
COMMAND
grep ${GREP_ARGS}
OUTPUT_VARIABLE MODULE_MSGS
ERROR_VARIABLE ERR)
但是输出/错误变量都为空。此外,我确定该命令已执行,因为如果我将文件名更改为不存在的文件,则会在输出变量中收到错误消息“ No such file or directory”。因此,在我看来,问题出在正则表达式参数传递中。我试图用"
包装它,但没有帮助。
从bash调用同一命令可以在Ubuntu 18.04上正确输出:
grep -oP ".*$" /home/yuriy/file.txt
谢谢!
最后找到了解决方案。设置参数的正确方法是不使用\"
符号:
SET(GREP_ARGS -oP .*$ /home/yuriy/file.txt)
不知道为什么会这样,但是可以。