如何将多个变量连接到命令并执行它?

时间:2019-05-10 13:51:47

标签: bash cmake

对于构建应用程序,我使用CMake。 我在具有多个变量的脚本中解析CMake命令:

CMAKE_COMMAND=" \
$CMAKE \
-G "$Build_TOOL_CMAKE" \
[...]"

解析该命令后,我用printf打印该命令以进行控制:

printf "\n${CMAKE_COMMAND}\n"

然后我最终使用以下命令执行命令:

$CMAKE_COMMAND

只要我将“忍者”用作生成器(-G-> BUILD_TOOL_CMAKE="Ninja"),该脚本就起作用了,因为其中没有空格字符。

现在,我想使用“ Eclipse CDT4-Unix Makefiles”作为生成器。我尝试了几种转义空格字符的方法,例如:

CMAKE_COMMAND=" \
$CMAKE \
-G \"$Build_TOOL_CMAKE\" \
[...]"

CMAKE_COMMAND=" \
$CMAKE \
-G '$Build_TOOL_CMAKE' \
[...]"

在某些情况下,打印的命令变得正确,但是执行该命令会导致诸如以下的错误:

  

CMake错误:无法创建命名生成器Eclipse

  

CMake错误:无法创建命名生成器“ Eclipse

这导致人们认为转义空格有问题,但是printf可以起作用:

cmake.exe -G"Eclipse CDT4 - Unix Makefiles" -S sourcefolder -B buildfolder # printf $CMAKE_COMMAND

我错过了什么吗?也许仅通过变量($CMAKE_COMMAND)执行也是错误的方法。

1 个答案:

答案 0 :(得分:1)

您可以使用CMake的configure_file命令:documentation

将所有变量放在command.in中并将其写入command

configure_file(command.in, command)

文件command.in如下所示:

${CMAKE_COMMAND} -G ${Build_TOOL_CMAKE}