【发布时间】:2019-01-28 19:45:11
【问题描述】:
我正在尝试为我的CMakeLists.txt 编写一个简单的execute_process 命令,以在安装 RPM 时检查主机文件中是否存在某段文本,如果不存在,将其附加到主机文件中。
但是,在运行 CMake 时,我收到以下消息:
grep ||: No such file or directory
grep: echo: No such file or directory
grep: 172.16.10.43 UPSSERVER: No such file or directory
grep: >>: No such file or directory
似乎认为我执行的每条命令都是一个文件?这是有问题的命令:
set(HOSTS_UPSSERVER "172.16.10.43 UPSSERVER")
execute_process(COMMAND grep -qxF ${HOSTS_UPSSERVER} /etc/hosts || echo ${HOSTS_UPSSERVER} >> /etc/hosts)
我知道命令本身可以工作,因为我已经在命令行之外单独测试了它。我定义 HOSTS_UPSSERVER 变量的方式的语法是否有错误?还是我使用 execute_process 命令的方式?
我没有太多运气找到有关 CMake 的有用信息,因为文档含糊不清,而且几乎不存在好的教程。
【问题讨论】:
-
"...因为文档含糊不清..." - 嗯? execute_process 的文档明确指出,在
COMMAND参数中:“...诸如>的shell 运算符被视为普通参数。(使用INPUT_*、OUTPUT_*, 和ERROR_*选项来重定向标准输入、标准输出和标准错误。)”。另请参阅该问题:stackoverflow.com/questions/35689501/…