linux - 为什么 bash/echo 在此 CMake 脚本中不起作用?

标签 linux bash cmake sh

我的 CMakeLists.txt 正确构建 my_target

我尝试添加此虚拟命令作为试用后构建步骤:

 ADD_CUSTOM_COMMAND (
        TARGET my_target POST_BUILD
        COMMAND "echo I made `ls ${MY_DIR} | wc -l` things")

当我运行 make my_target 时,它失败(构建后):

/bin/sh: 1: echo I made `ls /foo/bar | wc -l` things: not found

如果我将“echo”到“things”的部分复制粘贴到 shell 中,它就可以正常运行

I made 3 things

“/bin/sh: 1”前缀表明 shell 正在使用“echo...”作为其命令运行,我尝试将“echo”更改为“bash echo”,那么为什么这不起作用?

最佳答案

/bin/sh: 1: echo I made `ls /foo/bar | wc -l` things: not found

错误消息意味着某些东西正在尝试执行一个命令,从字面上看,带有空格和刻度,echo I made `ls/foo/bar | wc -l`东西

所以看起来cmake正在将整个引用字符串作为可执行文件传递。删除外部引号应该可以解决这个问题。

关于linux - 为什么 bash/echo 在此 CMake 脚本中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29589091/

相关文章:

c++ - 在 Linux 中使用 GDAL API 的程序

node.js - NodeJS `net` 模块在 Windows 上运行缓慢 ECONNREFUSED

linux - 为什么我不能在汇编中打印数字?

bash - 在单行 Bash 脚本中设置变量

C++ CMake 生成错误 "Undefined Reference"

c - 使用 libevent 编译时对 `event_new' 的 undefined reference

bash - 在bash脚本中平稳停止inotifywait管道

linux - 删除列 csv 文件,其中一些包含引号文本(包括逗号)

c++ - CMake:将可执行文件链接到多个库 (*.so)

c++ - 在 Visual Studio CMake 中设置默认编译器