我在运行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。您必须弄清楚为什么会这样,然后让该脚本打印正确的值,或者至少确保它打印的任何值都是一个单词并且不包含空格,然后才能起作用。

预计到达时间:

如果要在非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文件不会中断。

09-06 17:36