【发布时间】:2023-12-09 10:14:01
【问题描述】:
我似乎无法理解 CMake 的转义规则。给定:
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。自定义目标 works 正确构造命令,而 fails 错误执行:
X=\"A B C\" env ...
但是为什么呢?
【问题讨论】:
-
cmake: when to quote variables? 可能重复 请尝试
set(X "A B C")并且不要在${X}周围加上引号。 -
@Florian,
set(X "A B C")结果:"X=\"A B C\"" env,仍然是错误的。 -
我遇到了完全相同的问题,
ExternalProject_Add_Step(COMMAND build --args="my args")将执行build --args=\"my args\"这是不正确的。如果今晚找不到解决方案,我将开始赏金。
标签: cmake escaping double-quotes