cmake 无法正确解析命令行参数中的空格

cmake doesn't correctly parse whitespace in command line parameter

当我这样调用 cmake 时,一切正常:

cmake -G'Android Gradle - Ninja' ..

但是,我正在设置一个 bash 脚本,让我指定目标平台,动态更改 -G 参数。

#!/usr/bin/env bash

CMAKE_GENERATOR="Ninja"
if [[ $TARGET_PLATFORM == "android" ]] ; then
    CMAKE_GENERATOR="'Android Gradle - Ninja'"
fi

cmake -G$CMAKE_GENERATOR ..

这给了我以下错误:

CMake Error: Could not create named generator 'Android

显然 cmake 在空格处拆分生成器名称并将其解释为多个参数。我已经尝试了多种转义 single/double 引号和空格的组合,但无法使其正常工作。我什至不确定这是 cmake 还是 bash 问题。有什么想法吗?

以下命令中缺少引号:

cmake -G$CMAKE_GENERATOR ..

应该是

cmake -G"$CMAKE_GENERATOR" ..

因为分词发生在参数展开之后more information in bash documentation