Makefile中的缺少分隔符错误

8
我正在Windows上使用Qt 4.7.2版本。我已生成了Makefile、Makefile.Debug和Makefile.Release文件。但是,当我尝试使用mingw32-make构建可执行文件时,出现以下错误:
mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory `C:/Qt/4.7.2/src/plugins/sqldrivers/mysql'
Makefile.Debug:61: *** missing separator.  Stop.
mingw32-make[1]: Leaving directory `C:/Qt/4.7.2/src/plugins/sqldrivers/mysql'
mingw32-make: *** [debug-all] Error 2

1
你是否混合使用nmake/msvc的Makefile和Mingw? - Frank Osterfeld
展示 Makefile.Debug 的第 61 行(以及附近的行)有多难? - Jens
在第61行,只有“<<”符号。我在它前面加了一个制表符,现在它出现了另一个错误。我在下面提问了。 - gizemdemirel
3个回答

14

显然,这个答案晚了,但我为了纪念而回答……今天我想到了这个问题。

Frank Osterfeld几乎肯定是正确的。不确定你是如何生成makefile的,但它们可能是nmake makefile,而不是mingw makefile。通过查看Makefile.Debug的顶部即可确定。如果看到“CXX = cl”,而不是“CXX = g ++”,那么就是你的问题。

在我的情况下,我在尝试编译Qt SDK本身时遇到了这个错误。长话短说:我需要在配置命令行上指定“-platform win32-g ++”(它默认为win32-msvc)。


你必须指定“-platform <plat>”,其中<plat>是包含“win32-g ++”的任何字符串。这意味着“win64-g ++”不起作用,但“win32-g ++ -4.6”会起作用。请参见\Qt\4.8.5\tools\configure\configureapp.cpp的第1380行。 - JPaget
@JPaget,在选项屏幕中我在哪里可以检查/更改这个? - GuidoG

10

"Missing separator"(缺少分隔符)几乎总是指你有一行应该以制表符开头,但却以空格开头。


如何在代码中添加制表符?每次我添加制表符后返回编辑器(或其他地方),它都会自动将其更改为空格。 - GuidoG
哪个编辑器?许多编辑器都有方便的“有用”功能,可以使用它们认为你想要的内容来替换你键入的内容。 - William Pursell
Qt编辑器,如何在Qt编辑器中完成? - GuidoG

0

如果你真的向我们展示了Makefile.debug文件中第61行的内容,我们可以给你一个更好的答案。"Missing separator"是make的版本的"语法错误"。它基本上意味着make在makefile中看到了一行它无法理解的内容。

一个可能的原因是,正如William Pursell提到的那样,你在配方行之前有空格,但还有很多其他原因。也许你忘记了目标和先决条件之间的":",或者变量赋值中的"="。还有其他可能性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接