2016-03-07 866 views
2

当我尝试创建一个由在不同国家和时区工作的人开发的项目时,我的控制台中出现以下错误。他曾提到这个问题是因为数据/时间不同于他的电脑和我的。我不确定这是否属实,如果是这样的话,必须有解决方案,而不必改变我的电脑时间来匹配他的。我不知道还有什么可以发布的,如果只是让我知道,我会更新。我对C++/Qt Creator有点新鲜。这是为什么发生。它似乎永远不会完成,它只是无休止地打印到控制台。Qt Creator错误无限循环

编译输出控制台

Running steps for project Nexus... 
Configuration unchanged, skipping qmake step. 
Starting: "C:\Qt\Tools\mingw492_32\bin\mingw32-make.exe" 
C:\Qt\5.5\mingw492_32\bin\qmake.exe -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug" -o Makefile ..\Nexus\Nexus.pro 
C:\Qt\5.5\mingw492_32\bin\qmake.exe -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug" -o Makefile ..\Nexus\Nexus.pro 
C:\Qt\5.5\mingw492_32\bin\qmake.exe -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug" -o Makefile ..\Nexus\Nexus.pro 
C:\Qt\5.5\mingw492_32\bin\qmake.exe -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug" -o Makefile ..\Nexus\Nexus.pro 

通用信息输出控制台

Warnings while parsing QML type information of C:/Qt/5.5/mingw492_32/qml: 
<dump of C:\Qt\5.5\mingw492_32\qml>:1:24: Reading only version 1.1 parts. 
<dump of C:\Qt\5.5\mingw492_32\qml>:10:5: Expected only Component and ModuleApi object definitions. 

临文件

#------------------------------------------------- 
# 
# Project created by QtCreator 2016-02-29T21:37:32 
# 
#------------------------------------------------- 

QT  += core gui xml 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

include(core/core.pri) 
include(node/node.pri) 
include(librarybox/librarybox.pri) 
include(blockeditor/blockeditor.pri) 
include(propertyeditor/propertyeditor.pri) 
include(lib/lib.pri) 


TARGET = Nexus 
TEMPLATE = app 


SOURCES += main.cpp\ 
    mainwindow.cpp 


HEADERS += mainwindow.h 


FORMS += mainwindow.ui \ 
    virtualnamepropertyitem.ui 

RESOURCES += \ 
    nexus_resources.qrc 

RC_FILE = nexus.rc 
+1

究竟是什么错误?该qmake被称为多次? – maddin45

+0

你可以尝试改变你的日期/时间来测试它是否真的相关。 – Ilya

+0

@ maddin45我怎么能找到它调用qmake的代码? – JokerMartini

回答

3

如果您的.pro文件(或任何其他文件)具有未来的时间戳,则会发生这种情况。由qmake生成的Makefile包含一条规则,该规则将在.pro文件比较老时生成Makefile。由于新的Makefile,仍旧比未来的对应物旧,所以这个过程会持续到您实际到达正确的时间为止。

有两种方法来摆脱这种行为:

  1. 等到.pro文件的时间戳是过去(不推荐)
  2. 编辑.pro文件。即使像一个新的评论一样简单的编辑应该是足够的。
+0

他甚至可以撤销更改并在此之后再次保存。 – JojOatXGME

+0

我试过了,它通过QMake过程循环 – JokerMartini

+1

@JojOatXGME:是的,任何事情。在类似unix的系统中,touch * .pro'就足够了,但我不确定Windows的对应。 – Zeta

0

我写了一个python脚本,通过递归遍历项目的所有文件,只是重新保存文件。这更新了时间戳并更正了QMake无限循环。它现在编译正确。

4

有最新版本的QtCreator(3.6.1与Qt 5.6.0)相同的问题。

“Zeta”提出的答案没有帮助。

在项目选项中禁用“Shadow build”修复了我的问题。这是一个很好的解决方法。

最后缩短文件名(萨姆,那里巨大的)来解决这个问题:

  • 缩短项目名称(的.pro)(文件名和路径,去掉一些caracters)
  • 缩短的资源名称(。 qrc)(文件名和路径,删除了几个字符)

问题然后消失了(即使有影子构建,它可能与shadow-builds使用具有很长名称的输出文件夹相关)。

当文件路径太长(>〜170,找到a post on a forum reporting that)时,显然存在一个错误。

另一种方法是更改​​QtCreator用于阴影构建的模式。这可以从QtCreator选项进行修改,然后您可以缩短名称,这是快速轻松解决问题的另一种方法。

+1

当使用** shadow build **'qmake'确实会创建很长的路径:'build- 虽然我很惊讶这个错误从来没有发生在Linux上,并且在Windows上也没有发生过。我正在使用Qt 5.7。你的解决方案确实解决了我的问题,但是它在源目录(ies)内创建了一个小混乱,因为没有影子构建,所有东西都放在那里。 – rbaleksandar

+1

这应该是接受的解决方案 – Gojir4

+0

@rbaleksandar:改变'建设 - - _Qt_ _MinGW_ <架构> - '的东西更短的例如像' -mybuild_ <架构> - '从Qt的选项可以让你继续使用影子构建并解决问题。 – jpo38