cmake没有正确解析命令行参数中的空格

时间:2017-04-07 12:21:49

标签: bash cmake command-line-arguments whitespace

当我这样打电话给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将生成器名称拆分为空白并将其解释为多个参数。我尝试过多次转义单/双引号以及空白但无法使其工作的组合。我甚至不确定这是否是一个cmake或bash问题。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

以下命令中缺少引号:

cmake -G$CMAKE_GENERATOR ..

应该是

cmake -G"$CMAKE_GENERATOR" ..

因为在参数展开more information in bash documentation

之后发生了单词拆分