CMake quote escape conumdrum
我似乎无法理解克马克的逃跑规则。鉴于:CMake quote escape conumdrum,cmake,escaping,double-quotes,Cmake,Escaping,Double Quotes,我似乎无法理解克马克的逃跑规则。鉴于: set(X A B C) add_custom_target( works COMMAND DUMMY=0 X="${X}" env | grep ^X= COMMENT "This works") add_custom_target( fails COMMAND X="${X}" env | grep ^X= COMMENT "This fails") 目的是执行命令X=“A B C”env。自定义目标工作正确构造命令,其中as失败错误执行: X=\"
set(X A B C)
add_custom_target( works COMMAND DUMMY=0 X="${X}" env | grep ^X= COMMENT "This works")
add_custom_target( fails COMMAND X="${X}" env | grep ^X= COMMENT "This fails")
目的是执行命令X=“A B C”env
。自定义目标工作
正确构造命令,其中as失败
错误执行:
X=\"A B C\" env ...
但是为什么呢?实际上,您遇到了两个问题:
命令
后的第一个文本是命令名或文件。因此,CMake尝试将其作为单个“字符串”处理env
调用,以下内容确实对我有用:
cmake_minimum_required(VERSION 2.8)
project(QuotedStrings)
set(X "A B C")
add_custom_target( works COMMAND env DUMMY=0 X=${X} | grep ^X= COMMENT "This works")
add_custom_target( fails_no_more COMMAND env X=${X} | grep ^X= COMMENT "This works too")
有关更多详细信息和可能性,请参阅:
set(X“A B C”)
的可能重复项以及在${X}
@Florian,set(X“A B C”)
的结果是:“X=”A B C \“env
,这仍然是错误的。我遇到了完全相同的问题,外部项目添加步骤(命令构建--args=“my args”)
将执行build--args=\“我的args\”
这是不正确的。如果我今晚找不到解决办法,我就开始悬赏。