在CMake中转义$美元符号

9

我正在尝试通过CMake 3.1.1运行后构建命令,方法如下:

ADD_CUSTOM_COMMAND(
   TARGET mytarget
    POST_BUILD
    COMMAND for i in `ls *` \; do echo \$i \; done \; 

然而,即使我转义了美元符号,$i变量仍被评估为无值。根据日志,该命令被评估为:
for i in `ls *` ; do echo  ; done ; 

我尝试了不转义美元符号,但是导致了相同的问题。双斜杠也不起作用。现在我很困惑...

你能建议一种运行使用美元符号的命令的方法吗?

P.S. 这只是一个例子。我的实际命令比这个稍微复杂一些,我认为没有使用美元符号就无法解决。


尝试一下这个:echo '$i' - OT_DEV
这是我得到的:解析字符串时,cmake代码中存在语法错误 .../CMakeLists.txt:210\'$i' - Vyacheslav
在bash中,我们需要使用echo的-e选项才能使转义生效。 - OT_DEV
很遗憾,它甚至在CMake编译级别都失败了。 - Vyacheslav
如果您将VERBATIM添加到add_custom_command参数列表中会怎样呢? - starball
2个回答

10

5
使用 方括号引号
ADD_CUSTOM_COMMAND(
   TARGET mytarget
    POST_BUILD
    COMMAND [=[for i in `ls *`; do echo $i; done]=]
)

非常好,我不知道这种引用方法! - rems4e

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接