Qt 创建器错误无限循环

Qt Creator error endless loop

本文关键字:无限循环 错误 创建 Qt      更新时间:2023-10-16

当我尝试创建一个由在不同国家和时区工作的人开发的项目时,我的控制台中不断收到以下错误。他提到这个问题是因为数据/时间与他的计算机不同。我不确定这是否属实,如果是,则必须有一个解决方案,而不必更改我的计算机时间以匹配他的。我不确定还有什么有助于解决此问题的帖子,如果有的话,我会更新。我对C++/Qt Creator有点陌生。为什么会这样。它似乎永远不会完成,它只是无休止地将其打印到控制台。

编译输出控制台

Running steps for project Nexus...
Configuration unchanged, skipping qmake step.
Starting: "C:QtToolsmingw492_32binmingw32-make.exe" 
C:Qt5.5mingw492_32binqmake.exe -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug" -o Makefile ..NexusNexus.pro
C:Qt5.5mingw492_32binqmake.exe -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug" -o Makefile ..NexusNexus.pro
C:Qt5.5mingw492_32binqmake.exe -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug" -o Makefile ..NexusNexus.pro
C:Qt5.5mingw492_32binqmake.exe -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug" -o Makefile ..NexusNexus.pro

常规消息输出控制台

Warnings while parsing QML type information of C:/Qt/5.5/mingw492_32/qml:
<dump of C:Qt5.5mingw492_32qml>:1:24: Reading only version 1.1 parts.
<dump of C:Qt5.5mingw492_32qml>: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

如果您的.pro文件(或任何其他文件)具有来自未来的时间戳,则可能会发生这种情况。qmake生成的Makefile包含一个规则,当Makefile早于.pro文件时,该规则将重新生成该规则。由于新Makefile仍然比未来的对应物更旧,因此这种情况将持续到您实际到达正确的时间。

有两种方法可以摆脱此行为:

  1. 等到.pro文件的时间戳是过去的(不推荐)
  2. 编辑.pro文件。即使是像新评论这样的微不足道的编辑也应该足够了。

最新版本的QtCreator(3.6.1和Qt 5.6.0)也有同样的问题。

"Zeta"提出的答案没有帮助。

在项目选项中禁用"影子构建"为我解决了问题。这是一个很好的解决方法。

最后缩短文件名(有些很大)以解决问题:

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

问题随后消失了(即使使用影子构建,也可能与影子构建使用名称很长的输出文件夹有关)。

当文件路径太长时,显然存在一个错误(>~170,在论坛上发现了一个报告该帖子)。

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

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