当我尝试创建一个由在不同国家和时区工作的人开发的项目时,我的控制台中不断收到以下错误。他提到这个问题是因为数据/时间与他的计算机不同。我不确定这是否属实,如果是,则必须有一个解决方案,而不必更改我的计算机时间以匹配他的。我不确定还有什么有助于解决此问题的帖子,如果有的话,我会更新。我对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
仍然比未来的对应物更旧,因此这种情况将持续到您实际到达正确的时间。
有两种方法可以摆脱此行为:
- 等到
.pro
文件的时间戳是过去的(不推荐) - 编辑
.pro
文件。即使是像新评论这样的微不足道的编辑也应该足够了。
最新版本的QtCreator(3.6.1和Qt 5.6.0)也有同样的问题。
"Zeta"提出的答案没有帮助。
在项目选项中禁用"影子构建"为我解决了问题。这是一个很好的解决方法。
最后缩短文件名(有些很大)以解决问题:
- 缩短了项目名称(.pro)(文件名和路径,删除了一些字符)
- 缩短的资源名称 (.qrc)(文件名和路径,删除了一些字符)
问题随后消失了(即使使用影子构建,也可能与影子构建使用名称很长的输出文件夹有关)。
当文件路径太长时,显然存在一个错误(>~170,在论坛上发现了一个报告该帖子)。
另一种方法是更改QtCreator用于影子构建的模式。这可以从QtCreator选项中修改,然后您可以缩短名称,这是快速轻松地解决问题的另一种方法。
我写了一个python脚本,它以递归方式循环遍历项目的所有文件,只需重新保存文件即可。这更新了时间戳并更正了 QMake 无限循环。它现在可以正确编译。