我的QT Creator学习笔记(三)——程序源码与命令编译过程学习(在命令行编译程序)

本文主要是介绍我的QT Creator学习笔记(三)——程序源码与命令编译过程学习(在命令行编译程序),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      参考文献:《Qt Creator 快速入门》第三版 霍亚飞编著

前面的学习笔记我的QT Creator学习笔记(一)-——环境配置与HelloWorld项目中讲了如何用qt Creator创建一个项目,并编译运行。步骤很简单,是因为qt Creator帮我们做了很多工作。

     今天从源码编写、命令行编译程序,来学习Qt Creator内部是怎么帮我编译程序的。

一、新建工程目录

       在我们存放工程的文件夹下创建helloworld1文件夹,新建文本文档,输入以下代码,代码意义见注释,保存位main.cpp文件,注意编码格式位utf-8

#include <QApplication>//包含应用程序需要的头文件
#include <QDialog>//包含对话框类头文件
#include <QLabel>//包含label控件头文件
int main(int argc,char* argv[])//定义main函数
{QApplication a(argc,argv);//创建应用程序对象QDialog w;//创建对话框对象w.resize(400,300);//设置对话框的大小QLabel label(&w);//创建文本标签对象,文本标签的父窗口是上面创建的对话框label.move(120,120);//设置文本标签位置label.setText(QObject::tr("明天你好"));//设置文本标签显示内容,QObject::tr是为了多语言支持w.show();//显示对话框return a.exec();//让应用程序对象进入事件循环
}
 

 

二、使用命令行编译程序

配置qt 所需环境,qtenv2.bat文件,我的是在 C:\Qt\Qt5.7.1\5.7\msvc2013_64\bin\qtenv2.bat,在命令窗口运行,或者双击运行。这里其实就是配置一些环境变量,也可以手动配置。

我在学习这一块时配到很多问题,一般都是环境变量没配好,如果遇到“xx不是可执行命令或批处理文件的命令,看一下下面这几个环境变量是否配置了”

 

2、从开始菜单打开Qt 5.7 64-bit  for DeskTop(MSVC2013)

 2、使用vcvarsall.bat设置命令行编译环境

这里有个提示 "Remember to call vcvarsall.bat to complete environment setup!"因为我的qt是64位的,所以参数是amd64(这个参数很重要不然后面会包编译机器和目标机器冲突的错误)

3、执行qmake -project命令来生产与平台无关的.pro工程文件

4、编辑.pro文件

使用记事本打开helloworld1.pro文件在最后加上,greaterThan(QT_MAJOR_VERSION,4):QT +=widgets这行代码的以上是当Qt版本大于4时,则需要添加widgets模块。因为我们main函数中用到的那几个类,都包含在这个模块中。

5、使用qmake helloworld1.pro -spec win32-msvc2013命令生成用于编译的Makefile文件,Makefile文件与平台相关,包含了要创建的目标文件或可执行文件、创建目标文件所依赖的文件和创建每个目标文件时要运行的命令等信息。

 

6、jom命令编译程序,生成可执行文件

jom命令就是通过读入Makefile文件来进行编译工作的。

默认是编译release文件,如果要生成debug可执行文件,使用jom -f Makefile.debug

6、使用windeployqt release 命令把运行.exe所依赖的文件拷贝过来,双击exe运行

 

 

 

 

 

 

这篇关于我的QT Creator学习笔记(三)——程序源码与命令编译过程学习(在命令行编译程序)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/556720

相关文章

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

Java Kafka消费者实现过程

《JavaKafka消费者实现过程》Kafka消费者通过KafkaConsumer类实现,核心机制包括偏移量管理、消费者组协调、批量拉取消息及多线程处理,手动提交offset确保数据可靠性,自动提交... 目录基础KafkaConsumer类分析关键代码与核心算法2.1 订阅与分区分配2.2 拉取消息2.3

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面