解析错误。功能缺失结束")" CMake的

时间:2017-06-23 15:27:31

标签: cmake

我想从execute_process中的标题中提取字符串。 但是命令有一个错误,我尝试了很多东西,总是出现同样的错误。

execute_process(     COMMAND cat $(version_h)| grep -a"定义myVersion" | cut -d" " -f3 | cut -d'"' -f2`

OUTPUT_VARIABLE _Version)

如果我在控制台行中编写命令,则没有问题。

错误说:"解析错误。功能缺失结束")"。取而代之的是找到带有文本的未终止字符串" "

2 个答案:

答案 0 :(得分:0)

execute_process()仅处理进程及其参数,即不涉及shell。

因此,您有两个主要选择:

  1. execute_process(COMMAND bash -c "..." OUTPUT_VARIABLE _Version)
  2. execute_process(COMMAND cat ... COMMAND grep ... COMMAND cut ... COMMAND cut ... OUTPUT_VARIABLE _Version)
  3. 在第二个版本中,命令的标准输出和标准输入链接在一起。

    如果你想做更复杂的事情,你将不得不创建一个单独的脚本并以一个过程而不是面向shell的方式调用它,即选项1.

答案 1 :(得分:0)

问题是我需要删除引号字符,我猜Cmake和bash命令存在混淆。

execute_process(COMMAND cat ... COMMAND grep ... COMMAND cut ... COMMAND cut -c2- COMMAND rev COMMAND cut -c2- COMMAND rev OUTPUT_VARIABLE _Version)