如何使用MinGW通过命令行编译Qt应用程序?

时间:2012-02-25 01:45:18

标签: qt makefile mingw

我已经为MinGW下载了最新的Qt版本,并且我有与Qt兼容的正确的MinGW版本。当我尝试制作项目时,g ++无法找到我的源文件,即使它与项目文件位于同一文件夹中。

这些是我遵循的步骤(所有项目和源文件都在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”文件 项目文件。即使我用完整路径(“T:\ QtTest \ main.cpp”)替换“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安装程序建议的版本,可以在与Qt for MinGW安装程序相同的页面中下载。

2 个答案:

答案 0 :(得分:1)

问题解决了。

它与MinGW或Qt或qmake生成的makefile无关。我发现仅由Windows注册表中的自定义条目引起。我正在为遇到同样问题的人发布此解决方案:

前段时间我在HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor下的Windows注册表中创建了一个名为Autorun的条目,这使得CMD.exe在自定义工作目录中启动,这是我想做的事情(所以我跟着本页详述的步骤“如何更改命令提示符的默认启动目录”http://windowsxp.mvps.org/autoruncmd.htm)。

好吧,我完全忽略了该页面中的注意部分,其中指出“使用本文中提到的自动运行值更改当前目录可能会影响批处理脚本的功能” 。是的,对我感到羞耻。

所以,如果你有同样的问题,无法使用qmake制作你的Qt项目,并且你的项目结构和makefile中的其他一切看起来都没问题,验证你在Windows注册表中没有东西可能会更改命令提示符的启动目录。

答案 1 :(得分: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应该可以正常运行。如果没有,您所遵循的步骤没有任何问题,您的系统/环境出现了问题。