2016-03-07 853 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