Makefile错误:build.make:3687:***缺少分隔符。停止

时间:2015-02-16 08:48:01

标签: c cmake makefile

运行cmake

时出现以下错误
/build.make:3687: *** missing separator.  Stop.

第3687行有错误:

game_rUnversioned directory_32_OBJECTS = \

那里有什么问题?

2 个答案:

答案 0 :(得分:0)

裸露的反斜杠看起来非常可疑。这将被Make解释为continue that line on the next(物理)行的尝试,那么该行包含什么?

答案 1 :(得分:0)

答案是,你不能创建包含空格的变量名。这在(较新版本)中无效。所以这个:

game_rUnversioned directory_32_OBJECTS = \
由于空格,

不是有效的变量赋值(它与反斜杠无关)。

答案越长,您的脚本${CMAKE_CURRENT_SOURCE_DIR}/svn_version.sh显然应该打印SVN版本,而是打印字符串Unversioned directory。您必须弄清楚为什么会这样,并让该脚本打印正确的值,或者至少确保它打印的任何值都是单个单词并且不包含空格,然后才能生效。

ETA:

如果你想在一个不是SVN工作区的目录中工作,你需要修复svn_version.sh脚本,以便它可以处理它无法找到的情况。版。重写这样的脚本:

#!/bin/sh

ver=$(svnversion -n -c game | cut -d':' -f2)
case $ver in
    (*\ *) echo unknown ;;
    (*)    echo "$ver" ;;
esac
exit 0

这确保了如果game目录不是SVN目录,它将打印一个不包含任何空格(unknown)的值,这意味着您的makefile赢了& #39; t break。