逃离$美元签到CMake

Vya*_*lav 5 escaping cmake dollar-sign post-build-event

我正在尝试通过以下方式在CMake 3.1.1中运行post build命令:

ADD_CUSTOM_COMMAND(
   TARGET mytarget
    POST_BUILD
    COMMAND for i in `ls *` \; do echo \$i \; done \; 
Run Code Online (Sandbox Code Playgroud)

但是,虽然我逃脱了美元符号,但$ i变量被评估为空.根据日志,命令被评估为:

for i in `ls *` ; do echo  ; done ; 
Run Code Online (Sandbox Code Playgroud)

我试图没有逃避美元符号,但它导致了同样的问题.双斜线也不起作用.现在我很困惑......

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

PS这只是一个例子.我的实际命令稍微复杂一些,我认为如果不使用美元符号我就无法解决问题.

han*_*ank 7

您应该使用带有双美元符号的'make'样式转义:

ADD_CUSTOM_COMMAND(
   TARGET mytarget
    POST_BUILD
    COMMAND for i in `ls *` \; do echo $$i \; done \;
)
Run Code Online (Sandbox Code Playgroud)

相关链接:

https://www.gnu.org/software/make/manual/html_node/Variables-in-Recipes.html

https://www.mail-archive.com/cmake@cmake.org/msg11302.html


Raf*_*ver 5

使用括号引用

ADD_CUSTOM_COMMAND(
   TARGET mytarget
    POST_BUILD
    COMMAND [=[for i in `ls *`; do echo $i; done]=]
)
Run Code Online (Sandbox Code Playgroud)