2013-02-27 15 views
2

我想開始使用QT。我使用QT創建器來裝載QT5 MINGW編譯器,並且我正在嘗試構建一個名爲affinity的預附加示例問題是QT5我認爲嵌入了每個源文件的項目名稱,從而導致錯誤找不到該文件。類似QT5附上項目名稱與每個源文件名,編譯錯誤

:-1: error: ..affinemain.cpp: No such file or directory 

而文件名有些東西只是

main.cpp 

我不知道如何解決它。我在互聯網上搜索很多,但找不到任何有用的東西。 我甚至嘗試編譯命令提示符,但我不熟悉命令提示符編譯,因爲我是新來的QT,以前我完全用IDE在Visual Studio和Eclipse的Java開發,所以我不知道有關make文件和編譯器命令行參數。 可能有些機構請幫我解決這個問題,你能告訴請問爲什麼編譯器附加項目名稱與源文件名? 在此先感謝

回答

2

我有同樣的問題,我的解決方案可能會幫助你。

我現在正在使用Qt5.0.1,並且有兩個發行版可以在Windows上使用它:Qt5.0.1-mingw和Qt5.0.1-msvc2010。 我不得不使用mingw,並且在我的設置中有一個問題,路徑中忽略了「/」。

所以根據Qt Creator中,編譯器調用來處理文件mainwindow.cpp並將該文件傳遞給它

g++ /*truncated*/ ..\qt-example\mainwindow.cpp 

以下是完整的編譯器輸入:

g++ -c -pipe -fno-keep-inline-dllexport -g -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -DQT_NEEDS_QMAIN -I..\qt-example -I"..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include" -I"..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include\QtWidgets" -I"..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include\QtGui" -I"..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\include\QtCore" -I"debug" -I"." -I"." -I"..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\mingw47_32\mkspecs\win32-g++" -o debug\mainwindow.o ..\qt-example\mainwindow.cpp 

和錯誤產生的。

g++.exe: error: ..qt-examplemainwindow.cpp: No such file or directory 
g++.exe: fatal error: no input files 
compilation terminated. 

因此,我們可以看到「\」被編譯器忽略,文件名與目錄名合併。

該問題的解決方案轉到使用的工具 - MinGW(GCC和Binutils的極簡端口)。還有MSYS - 一組GNU實用程序(如bash,make,gawk和grep)的集合,允許構建依賴於傳統UNIX工具的應用程序和程序。在我們的例子中 - g ++。

MSYS不附帶Qt5.0.1-mingw,g ++沒有使用它,但在您的PATH環境變量中有可用的MSYS會破壞系統。

MSYS is used爲git scm,我已經安裝了,所以我的路徑包含與git捆綁在一起的MSYS鏈接。所以我有我的PATH環境變量中的下一個路徑。

C:\Program Files (x86)\git\bin;C:\Program Files (x86)\git\cmd 

我還沒有發現MSYS是如何使用Qt Creator中或g ++,或者是掛,但是當我從PATH下降一個路徑:

C:\Program Files (x86)\git\bin; 

並重新啓動Qt Creator中 - G ++成功編譯我的文件,它工作。 問題爲什麼/如何影響不應該使用安裝了git的MSYS utils的Qt Creator/g ++仍然是開放的。

+0

MSYS不需要MinGW的(-w64)GCC。你不應該在系統範圍的PATH中加入'msysgit/bin'。除去這個問題,在重新運行qmake之後你有更多的運氣。 MSYSgit應該安裝git Bash的快捷方式,它不需要任何PATH修改。如果你想從cmd中使用基本的git命令,請將'../ git/cmd'部分放在PATH中。 – rubenvb 2013-03-17 09:48:13

+0

對,MSYS不是必需的,但問題是爲什麼/它如何打破g ++。因爲它確實打破了它。我沒有故意添加'sysgit/bin' - 它們是在安裝過程中默默添加的。正如我所說的,git(在Console2中)和qmake都沒有它們。很好的事情,添加'../git/cmd'PATH以獲得從cmd運行的git。我會把這個添加到答案中。謝謝。 – pershyn 2013-03-17 10:25:01

+0

你從哪裏得到你的msysgit?每次我安裝它,它都會提供添加git/bin,git/cmd或者沒有任何東西給PATH的選擇,並且有關於將git/bin添加到PATH的大警告。 – rubenvb 2013-03-17 10:46:13

0

我無法評論。

重要:刪除發佈之前嘗試作者日期的提示debug文件夾(編譯版本)中的所有文件...