Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MinGW通过命令行编译Qt应用程序?_Qt_Makefile_Mingw - Fatal编程技术网

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

如何使用MinGW通过命令行编译Qt应用程序?,qt,makefile,mingw,Qt,Makefile,Mingw,我已经下载了MinGW的最新Qt版本,并且我有与Qt兼容的正确的MinGW版本。当我尝试创建项目时,g++无法找到我的源文件,即使它与项目文件位于同一文件夹中 这些是我遵循的步骤(所有项目和源文件都位于T:\qtest): 输出是这样的: T:\QtTest> make mingw32-make -f Makefile.Debug mingw32-make1: Entering directory `T:/QtTest’ g++ -c -g -frtti -fexceptions -mth

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

这些是我遵循的步骤(所有项目和源文件都位于
T:\qtest
):

输出是这样的:

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:\qtest\main.cpp”),它仍然找不到它。我做错了什么

以下是我的项目结构: (main.cpp是我编写的唯一文件,其他所有文件都是由qmake生成的)


我的g++版本是4.4.0,这是Qt安装程序建议的版本,可在Qt for MinGW安装程序的同一页面下载。

是否安装了MSYS?如果MSYS中的
sh.exe
位于系统路径上,则可能与windows样式路径的解释冲突。检查文档

如果这不是问题所在,则删除项目文件夹中除源文件之外的所有内容,然后使用
qmake-project
重新开始。完成该步骤后,打开
.pro
文件,确认一切正常。对于一个非常基本的项目,我得到如下内容:

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

接下来的两个步骤,运行
qmake
,然后运行
make
,应该可以正常工作。如果没有,则说明您遵循的步骤没有问题,您的系统/环境也有问题。

是否安装了MSYS?如果MSYS中的
sh.exe
位于系统路径上,则可能与windows样式路径的解释冲突。检查文档

如果这不是问题所在,则删除项目文件夹中除源文件之外的所有内容,然后使用
qmake-project
重新开始。完成该步骤后,打开
.pro
文件,确认一切正常。对于一个非常基本的项目,我得到如下内容:

TEMPLATE = app
TARGET = 
DEPENDPATH += .
INCLUDEPATH += .
# Input
HEADERS += widget.h
FORMS += widget.ui
SOURCES += main.cpp widget.cpp
接下来的两个步骤,运行
qmake
,然后运行
make
,应该可以正常工作。如果没有,则说明您遵循的步骤没有问题,并且您的系统/环境有问题。

问题已解决

它与MinGW或Qt或qmake生成的makefile无关。我发现这完全是由Windows注册表中的自定义项引起的。我为遇到相同问题的任何人发布此解决方案:

不久前,我在Windows注册表中的
HKEY\u CURRENT\u USER\Software\Microsoft\Command Processor
下创建了一个名为
Autorun
的条目,它使CMD.exe在自定义工作目录中启动,这是我想做的事情(因此我遵循了本页中关于“如何更改命令提示符的默认启动目录”:

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

因此,如果您遇到同样的问题,无法使用qmake创建Qt项目,并且项目结构和makefiles中的其他内容看起来都正常,请验证Windows注册表中没有可能更改命令提示符的启动目录的内容。问题已解决

它与MinGW或Qt或qmake生成的makefile无关。我发现这完全是由Windows注册表中的一个自定义项引起的。我为遇到相同问题的任何人发布此解决方案:

不久前,我在Windows注册表中的
HKEY\U CURRENT\U USER\Software\Microsoft\Command Processor
下创建了一个名为
Autorun
的条目,它使CMD.exe在自定义工作目录中启动,这是我想做的事情(因此我遵循了本页中关于如何更改命令提示符的默认启动目录“:”

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


因此,如果您遇到同样的问题,无法使用qmake创建Qt项目,并且项目结构和makefiles中的其他内容看起来都正常,请验证Windows注册表中没有可能更改命令提示符的启动目录的内容。

@FernandoAiresCastello:您可能希望ost项目文件。以及t:\qttest的目录列表。此外,您可能希望提及g++版本。@FernandoAiresCastello:您可能希望发布项目文件。以及t:\qttest的目录列表。此外,您可能希望提及g++版本。我没有安装MSYS(如果在命令行中键入sh.exe,则找不到此程序)。我打开了.pro文件,它看起来还可以。我编辑了由qmake生成的Makefile.debug,并包含了main.cpp和debug/main.o的完整路径以及对我的项目文件的所有其他引用。它可以工作。但是如果我修改代码并使用qmake,我必须再次编辑Makefile。因此,这将成为一项乏味且不必要的工作。有没有办法解决这个问题强制qmake包含我的项目的完整路径?我没有安装MSYS(如果我在命令行中键入sh.exe,它找不到此程序)。我打开了.pro文件,它看起来还可以。我编辑了由qmake生成的Makefile.debug,包括main.cpp和debug/main.o的完整路径,以及对我的项目文件的所有其他引用。它可以工作。但是,如果我修改代码并使用qmake,我必须再次编辑Makefile。因此,这将成为一项乏味和不必要的工作。不是吗
TEMPLATE = app
TARGET = 
DEPENDPATH += .
INCLUDEPATH += .
# Input
HEADERS += widget.h
FORMS += widget.ui
SOURCES += main.cpp widget.cpp