博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows下使用MakeFile(Mingw)文件
阅读量:6673 次
发布时间:2019-06-25

本文共 4583 字,大约阅读时间需要 15 分钟。

下面是我基于《C++GUI QT4编程(第二版)》 2.3节快速设计对话框编写例子地址:

https://files.cnblogs.com/files/senior-engineer/gotocell.7z

 

缘由:本人想在windows下创建Qt工程并编译,安装qt-opensource-windows-x86-mingw530-5.7.0.exe包,使用集成开发环境IDE编译无问题,但是本人想试一下make本地编译生成xxx.exe结果遇到些问题,在此分享

根据QT4.0书上说明构建步骤如下:(以helloQt项目名为例)

  1.在命令提示符下,进入hello目录,输入如下命令,生成一个与平台无关hello.pro:

  qmake -project

  2.然后,键入如下命令,从这个项目生成一个与平台相关的makefile文件:

  qmake helloQt.pro

  3.键入make命令就可以构建改程序。

遇到问题:

  1.首相windows下没有qmake命令,但是安装完qt-opensource-windows-x86-mingw530-5.7.0.exe包之后,安装目录下就有一个qmake.exe文件,可使用everything工具全盘搜索,即可见到,

  现在我们有两种方案,1,在qmake.exe文件夹目录下运行qmake指令(仅限此目录下可以识别qmake);2.添加环境变量到path下,就可以任何目录下运行qmake。

  执行完qmake -project命令生成平台无关文件helloQt.pro内容如下:

####################################################################### Automatically generated by qmake (3.0) ?? ?? 16 19:35:06 2016######################################################################TEMPLATE = appTARGET = helloQtINCLUDEPATH += .# InputHEADERS += mainwindow.h ui_mainwindow.hFORMS += mainwindow.uiSOURCES += main.cpp mainwindow.cpp

  2.执行完qmake helloQt.pro命令生成平台相关的makefile文件

############################################################################## Makefile for building: helloQt# Generated by qmake (3.0) (Qt 5.7.0)# Project:  helloQt.pro# Template: app# Command: D:\ProgramFilies\Qt5.7.0\5.7\mingw53_32\bin\qmake.exe -o Makefile helloQt.pro#############################################################################MAKEFILE      = Makefilefirst: releaseinstall: release-installuninstall: release-uninstallQMAKE         = D:\ProgramFilies\Qt5.7.0\5.7\mingw53_32\bin\qmake.exeDEL_FILE      = delCHK_DIR_EXISTS= if not existMKDIR         = mkdirCOPY          = copy /yCOPY_FILE     = copy /yCOPY_DIR      = xcopy /s /q /y /iINSTALL_FILE  = copy /yINSTALL_PROGRAM = copy /yINSTALL_DIR   = xcopy /s /q /y /iDEL_FILE      = delSYMLINK       = $(QMAKE) -install ln -f -sDEL_DIR       = rmdirMOVE          = moveSUBTARGETS    =  \        release \        debug......

  3.运行make找不到命令,发现安装目录下有一个mingw32-make.exe猜测此文件即是make文件,添加环境变量

  运行命令mingw32-make

  结果报错,g++命令无法识别,再继续在安装目录下找到g++.exe添加环境变量,

  继续运行mingw32-make,报错mainwindow.h:4:23: fatal error: QMainWindow: No such file or directory

D:\QT\helloQt>mingw32-makemingw32-make -f Makefile.Releasemingw32-make[1]: Entering directory 'D:/QT/helloQt'g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I. -I. -I..\..\ProgramFilies\Qt5.7.0\5.7\mingw53_32\include -I..\..\ProgramFilies\Qt5.7.0\5.7\mingw53_32\include\QtGui -I..\..\ProgramFilies\Qt5.7.0\5.7\mingw53_32\include\QtANGLE -I..\..\ProgramFilies\Qt5.7.0\5.7\mingw53_32\include\QtCore -Irelease -I..\..\ProgramFilies\Qt5.7.0\5.7\mingw53_32\mkspecs\win32-g++  -o release\main.o main.cppIn file included from main.cpp:1:0:mainwindow.h:4:23: fatal error: QMainWindow: No such file or directorycompilation terminated.Makefile.Release:118: recipe for target 'release/main.o' failedmingw32-make[1]: *** [release/main.o] Error 1mingw32-make[1]: Leaving directory 'D:/QT/helloQt'Makefile:34: recipe for target 'release' failedmingw32-make: *** [release] Error 2

  找不到QMainWindow头文件,此时无从下手,此helloQt工程是用IDE创建的并且编译没问题,不过此时我再次使用IDE编译发现报同样的错误mainwindow.h:4:23: fatal error: QMainWindow: No such file or directory

  郁闷之极,怎么会找不到这个文件

  ...

  此时又重新建一个工程对比文件发现IDE生成的helloQt.pro文件有差别,IDE生成的helloQt.pro文件如下:

 

#-------------------------------------------------## Project created by QtCreator 2016-10-15T18:10:09##-------------------------------------------------QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = qt_emptyTEMPLATE = appSOURCES += main.cpp\        mainwindow.cppHEADERS  += mainwindow.h

 

  比较发现命令行qmake -project生成的文件helloQt.pro少两行

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  

  添加完这两行之后运行mingw32-make 编译成功生成helloQt.exe

  完美!!!

  运行正常!!!

  

  后话:

  在仔细思考之后发现这两段文字中的粗体部分,平台无关平台相关,

  1.在命令提示符下,进入hello目录,输入如下命令,生成一个与平台无关hello.pro:

  qmake -project

  2.然后,键入如下命令,从这个项目生成一个与平台相关的makefile文件:

  可能正是这两句话导致我出错,因为我是在windows下运行生成了平台无关的hello.pro文件

  QT       += core gui

  greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

   再查阅资料(.pro文件命令格式)发现

  QT:指定工程索要使用的QT模块(默认的是core gui,对应于QtCore和QtGui模块)

  查阅QT帮助文档

  QMainWindow Class

The  class provides a main application window. 

Header:

#include <QMainWindow>

qmake:

QT += widgets

Inherits:

  发现类QMainWindow继承自QWidget,所以需要添加widgets模块

  所以问题根因一步步揭晓:

  1.少添加core gui 模块与widgets模块 同时还可以进行版本判断。

 

  QT += core gui

 
  greaterThan(QT_MAJOR_VERSION, 4): QT += widgets   如有问题欢迎各路大神进行指点...不吝赐教
努力!从什么时候开始都不晚
 
分类: 

转载地址:http://ozgxo.baihongyu.com/

你可能感兴趣的文章
WORD神操作!第一个技巧你就傻眼了!
查看>>
js中数组连接concat()
查看>>
HDU 2159 FATE
查看>>
docker-compose 意见搭建Samba文件共享服务
查看>>
Keepalived+Nginx搭建主从高可用并带nginx检测
查看>>
VMware 中如何打开U盘弹出U盘或者移动硬盘的(两种方法)
查看>>
8.10模拟赛
查看>>
走进c++0x,体验不一样的c++
查看>>
tomcat启动报错
查看>>
【转】Centos yum 换源
查看>>
标准字符串函数及 字符串类--数据结构
查看>>
Hibernate内测总结
查看>>
matplotlib.pyplot如何绘制多张子图
查看>>
excel 常用设置
查看>>
[自制操作系统] BMP格式文件读取&图形界面系统框架/应用接口设计
查看>>
js !!条件判断或运算的作用
查看>>
记一次安装Nginx+php-fpm安装后无法解析.php文件,状态码200,但显示空白页
查看>>
BFC
查看>>
C++中++i与i++
查看>>
P1233 木棍加工
查看>>