2012-02-25 81 views
1

我已經下載了MinGW的最新Qt版本,並且我有與Qt兼容的正確的MinGW版本。當我嘗試創建項目時,即使它與項目文件在同一文件夾中,g ++也無法找到我的源文件。如何使用MinGW通過命令行編譯Qt應用程序?

這些是我遵循的步驟(所有的項目和源文件都在T:\QtTest):

T:\QtTest> qmake -project 
T:\QtTest> qmake 
T:\QtTest> make 

和輸出是這樣的:

T:\QtTest> make 
mingw32-make -f Makefile.Debug 
mingw32-make1: Entering directory `T:/QtTest’ 
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I「c:\Qt\4.8.0\include\QtCore」 -I「c:\Qt\4.8.0\include\QtGui」 -I「c:\Qt\4.8.0\include」 -I」.」 -I「c:\Qt\4.8.0\include\ActiveQt」 -I「debug」 -I「c:\Qt\4.8.0\mkspecs\default」 -o debug\main.o main.cpp 
g++: main.cpp: no such file or directory 
g++: no input files 
mingw32-make1: *** [debug/main.o] Error 1 
mingw32-make1: Leaving directory `T:/QtTest’ 
mingw32-make: *** [debug] Error 2 

我不知道爲什麼它不能找到與「 」項目文件相同的目錄中的「main.cpp」文件。即使我將「main.cpp」替換爲完整路徑(「T:\ QtTest \ main.cpp」),它仍然不會找到它。我究竟做錯了什麼?

以下是我的項目結構: (main.cpp的是,我寫的唯一的文件,由QMAKE生成所有其他)

T:\QtTest\main.cpp 
T:\QtTest\Makefile 
T:\QtTest\Makefile.debug 
T:\QtTest\Makefile.release 
T:\QtTest\QtTest.pro 
T:\QtTest\debug\ 
T:\QtTest\release\ 

我的G ++版本是4.4.0,這是版本由Qt安裝程序建議,可以在與MinGW安裝程序的Qt相同的頁面下載。

+0

@FernandoAiresCastello:您可能要張貼的項目文件。和t:\ qttest的目錄列表。你也可能想提到g ++版本。 – SigTerm 2012-02-25 02:08:44

回答

1

問題已解決。

它與MinGW或Qt或qmake生成的makefiles無關。我發現它完全是由Windows註冊表中的自定義條目引起的。我爲任何遇到相同問題的人發佈此解決方案:

前段時間我在Windows註冊表中創建了一個名爲的條目,它使得CMD.exe在自定義工作目錄中啓動,這是我想要做的事情(所以我按照這個頁面中詳細描述的步驟「如何更改命令提示符的默認啓動目錄」http://windowsxp.mvps.org/autoruncmd.htm)。

嗯,我完全忽略在該網頁上,其中指出,注意部分的「更改使用這篇文章中提到的自動運行值當前目錄,可能會影響批處理腳本的功能」。是的,對我感到羞恥。

所以,如果你有同樣的問題無法使用qmake製作你的Qt項目,並且其他項目在你的項目結構和makefile文件中看起來不錯,確認你沒有Windows註冊表中的某些東西更改命令提示符的啓動目錄。

0

您是否安裝了MSYS?如果來自MSYS的sh.exe位於系統路徑中,則它可能與windows樣式路徑的解釋衝突。檢查文檔here

如果這不是問題,那麼請刪除項目文件夾中除源文件以外的所有內容,並重新從qmake -project重新開始。完成該步驟後,打開.pro文件並確認事情看起來正確。對於一個非常基本的項目,我得到的是這樣的:

TEMPLATE = app 
TARGET = 
DEPENDPATH += . 
INCLUDEPATH += . 
# Input 
HEADERS += widget.h 
FORMS += widget.ui 
SOURCES += main.cpp widget.cpp 

接下來的兩個步驟,運行qmake然後make應能正常工作。如果不是這樣,那麼您所遵循的步驟就沒有問題,並且系統/環境出現問題。

+0

我沒有安裝MSYS(如果我在命令行中鍵入sh.exe沒有找到這個程序)。我打開.pro文件,它看起來很好。 我編輯了由qmake生成的Makefile.debug,幷包含main.cpp和debug/main.o的所有路徑以及對我的項目文件的所有其他引用。有用。但是,如果我修改我的代碼並使用qmake,則必須再次編輯makefile。所以它變得單調乏味和不必要的工作。 是不是有辦法強制qmake包含我的項目的完整路徑? – 2012-02-25 12:32:32

相關問題