我试图将参数列表传递给使用add_custom_command调用的命令的命令行。
使用忍者生成器时,列表元素会被单独引用,然后用分号连接。 使用Visual Studio 2017生成器时,将首先串联元素,然后将整个字符串都用引号引起来。 对于一个调用自定义命令的多平台项目,这让我很头疼。
CMakeLists.txt样本(简体):
set(MY_VARIABLE "value 1" "value 2" "value3")
add_custom_command(OUTPUT Dummy
COMMAND echo "${MY_VARIABLE}" VERBATIM)
add_custom_target(TestTarget ALL DEPENDS Dummy)
使用Visual Studio时,
cmake -G "Visual Studio 15 2017" .. && cmake --build .
结果是
"value 1";"value2";"value3"
在Windows上使用Ninja时,
cmake -G "Ninja" .. && cmake --build .
结果是
"value 1;value2;value3"
这是否按预期工作?还是我犯错了?
我正在使用CMake 3.15.2。
说明:
我想要的结果是忍者,即所有引用为单个字符串。我正在运行的实际命令正在调用CMake来运行脚本,而我正在尝试向其传递一个列表变量,即:
cmake -D "MY_VARIABLE=${MY_VARIABLE}" -P MyScript.cmake