为什么 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 将整个引号字符串作为可执行文件传递。删除外部引号应该可以解决这个问题。