c-生成文件错误:build.make:3687:***缺少分隔符.停止



运行cmake 时出现以下错误

/build.make:3687: *** missing separator.  Stop.

第3687行出现错误:

game_rUnversioned directory_32_OBJECTS = 

那里出了什么问题?

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

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),这意味着生成文件不会中断。

这个裸反斜杠看起来非常可疑。Make会将其解释为试图在下一行(物理)上继续该行,那么该行包含什么?

最新更新