为什么 bash/echo 在此 CMake 脚本中不起作用?
Why doesn't bash/echo work in this CMake script?
我的 CMakeLists.txt 正确构建 my_target
。
我尝试添加这个虚拟命令作为试验post-构建步骤:
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` things
.
的命令,字面上用空格和刻度表示
所以看起来 cmake
将整个引号字符串作为可执行文件传递。删除外部引号应该可以解决这个问题。
我的 CMakeLists.txt 正确构建 my_target
。
我尝试添加这个虚拟命令作为试验post-构建步骤:
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` things
.
所以看起来 cmake
将整个引号字符串作为可执行文件传递。删除外部引号应该可以解决这个问题。