我似乎无法理解 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 ...
But why?
其实你遇到了两个问题:
- 不要在自定义命令中引用 CMake 变量。 CMake 将为您执行必要的转义序列。
- 之后的第一个文字
COMMAND
假定是命令名或文件。因此 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")
有关更多详细信息和可能性,请参阅:
- cmake:如何在自定义命令中包含文字双引号?
- cmake:何时引用变量?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)