2017-04-07 92 views
0

當我打電話cmake的這個樣子,一切正常: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問題。有任何想法嗎?

+0

它看起來像一個問題,我問前陣子: http://stackoverflow.com/questions/5730881/invoking-a-command-line-with-spaces-from-a-variable-in-a-bash-script – Alain

+0

並道歉,如果我打破任何ru我指的是我自己以前的問題...... – Alain

回答

3

行情中缺少以下命令:

cmake -G$CMAKE_GENERATOR .. 

應該

cmake -G"$CMAKE_GENERATOR" .. 

,因爲分詞參數擴展後發生more information in bash documentation

+0

這樣做。感謝您也鏈接到一個解釋! – avf