CMAKE执行GREP命令使输出变量为空

时间:2019-10-28 11:14:56

标签: cmake grep

我正试图从带有cmake文件的regexp中获取文件信息。 这是一个简单的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

谢谢!

1 个答案:

答案 0 :(得分:0)

最后找到了解决方案。设置参数的正确方法是不使用\"符号:

SET(GREP_ARGS -oP .*$ /home/yuriy/file.txt)

不知道为什么会这样,但是它可以工作。