我的 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/