Qt实现一个简单的编译器(软件生成器)

本文章只记录如何用Qt实现一个简单编译器,即点击本软件中的按钮便可在另一目录中生成一个新的软件(与本软件不冲突)。


文章目录

  • Qt实现一个简单的编译器(软件生成器)
  • 前言
  • 一、命令行执行Qt程序
    • 1.使用Qt for Desktop MinGW 7.3.0 64-bit
      • 1.先指定项目目录
      • 2.生成makefile文件
      • 3.编译程序
      • 4.为生成的exe文件生成所依赖的dll
      • 5.双击.exe文件,验证结果
    • 2.直接使用CMD执行程序
      • 1.将刚才找到的qtenv2.bat复制到目录下
      • 2.运行cmd执行命令:
      • 3.后续步骤同使用Qt for Desktop MinGW 7.3.0 64-bit
  • 二、如何在软件生成器中生成一个可执行文件
    • 1.创建脚本文件
    • 2.执行脚本文件
  • 总结

前言

如何实现编译功能,听起来像是一个很复杂的事,但其实只要计算机里有我们需要的编译环境,实现起来也就不难了。我们只需要在点击编译按钮的槽函数中启动命令行执行另一程序的代码并打包即可。


提示:以下是本篇文章正文内容,下面记录了如何用命令行执行程序、如何在软件生成器中生成一个可执行文件两方面。

一、命令行执行Qt程序

1.使用Qt for Desktop MinGW 7.3.0 64-bit

Qt for Desktop MinGW 7.3.0 64-bit是Qt自带的命令行窗口,我在网上查了一下介绍说它是cmd的快捷链接,也就是说和cmd是一回事,只是在cmd里多执行了几句命令,想了解的可以打开快捷方式的文件所在位置查看属性,可以看到目标位置写着:C:\Windows\System32\cmd.exe /A /Q /K D:\Qt\Qt5.12.10\5.12.10\mingw73_64\bin\qtenv2.bat,我大胆的猜测了下这应该是意味着双击打开该快捷方式时,打开的其实就是cmd,只是打开时就执行了qtenv2.bat文件,这个猜测在后续尝试中也得到了证实。

接着说如果使用Qt 5.12.10 (MinGW 7.3.0 64-bit),怎么编译.pro文件:

1.先指定项目目录

cd D:\test

2.生成makefile文件

如果没有.pro文件,需要先生成.pro,建议提前写好.pro文件,执行时可能会缺少模块等问题还需现加。

qmake -project

如果有.pro文件只需执行qmake即可。

qmake

3.编译程序

mingw32-make

不要质疑,即使是64位也是mingw32-make,其实是执行的64位目录里的mingw32-make.exe。

4.为生成的exe文件生成所依赖的dll

mingw32-make会将exe默认生成到release中,我们只需执行打包exe的方法即可。

cd D:\test\release
windeployqt test.exe

5.双击.exe文件,验证结果

2.直接使用CMD执行程序

1.将刚才找到的qtenv2.bat复制到目录下

2.运行cmd执行命令:

cd /d D:\test
qtenv2.bat

3.后续步骤同使用Qt for Desktop MinGW 7.3.0 64-bit

二、如何在软件生成器中生成一个可执行文件

1.创建脚本文件

在一中已经实现了如何生成一个可执行文件了,我们只需要在生成器项目中调用命令行来控制何时编译另一个项目,调用cmd的方法网上皆能查到,不再赘述。我选择使用.bat文件,点击按钮时,一次性跑完。
将刚才复制的qtven2.bat重命名为qtmake.bat,右击编辑,前面的不需要改,把后续操作加上:

@echo off
echo Setting up environment for Qt usage...
set PATH=D:\Qt\Qt5.12.10\5.12.10\mingw73_64\bin;D:/Qt/Qt5.12.10/Tools/mingw730_64\bin;%PATH%
cd /D D:\Qt\Qt5.12.10\5.12.10\mingw73_64CD /D D:\Wwj\testCompileQt\testCompileQt
qmake
mingw32-make
CD /D D:\Wwj\testCompileQt\testCompileQt\release
windeployqt testCompileQt.exe

2.执行脚本文件

按钮槽函数中执行脚本文件:

QProcess qtmake(NULL);
qtmake.setWorkingDirectory("../test");//.bat为文件所在文件夹路径
QString command = "../test/qtmake.bat";//.bat的路径
qtmake.start(command);
qtmake.waitForFinished();

执行后,点击按钮测试有效。


总结

Qt实现一个编译器,听起来很难,实际操作起来其实很简单,总的来说就是,创建两个项目,一个是所谓编译器,另一个是被执行项目,编译器的功能只是调用命令行来编译被执行项目。

Qt实现一个简单的编译器(软件生成器)相关推荐

  1. 基于C++和QT实现的简单数独游戏软件

    资源下载地址:https://download.csdn.net/download/sheziqiong/85660211 一.实验题目与要求 本次实验主要内容是实现一个简单的数独软件,具体要求如下: ...

  2. 使用Qt做一个简单计算器

    title: Calculator date: 2022-09-04 11:10:12 tags: [Qt, 应用, C++] typora-root-url: Calculator 使用Qt做一个简 ...

  3. Python制作一个简单的抽奖软件(二)

    Python制作一个简单的抽奖软件(二) 认识QT 因为都对 QT和tkinter都没用过,之前简单使用tkinter后发现,界面调整不太好弄.然后度娘了之后,QT是强大GUI库之一,很多人都推荐它. ...

  4. 实现一个简单的编译器

    简单的说 编译器 就是语言翻译器,它一般将高级语言翻译成更低级的语言,如 GCC 可将 C/C++ 语言翻译成可执行机器语言,Java 编译器可以将 Java 源代码翻译成 Java 虚拟机可以执行的 ...

  5. linux qt小型计算器,Qt实现一个简单的计算器

    Qt实现一个简单的计算器 作者:hackett 微信公众号:加班猿 一.UI界面版 运行效果:输入num1和num2选择+-*/点击计算即可 UI界面设计: 3个lineEdit(lineEditNu ...

  6. linux下Qt编写串口调试助手,如何在linux下用QT写一个简单的串口调试助手

    如何在linux下用QT写一个简单的串口调试助手 QT5串口类 在QT5以前,编写串口一般使用的是qextserialport类,但在QT5之后有了QT自带的串口类SerialPort(串口基础类)和 ...

  7. java简单编译器源代码_25行代码实现一个简单的编译器

    起因 <25行JavaScript语句实现一个简单的编译器>实现的是一个简单到不能再简单的玩具的玩具,他的魔法是函数式编程简化了js代码.java 8提供了函数式编程的支持,昨晚脑子抽风突 ...

  8. 一个简单的录音软件程序代码【C++】

    一个简单的录音软件程序代码[C++]今天的院内绿草茵茵的 录音软件,岁月一去不回返,顽强拼搏,我将来的录音软件家是一栋三层的别墅,因为小树给我留下的是顽强拼搏,你见状,可你的眼睛好像在说,那盛夏的梧桐 ...

  9. 用opengl编写一个简单的画图软件示例代码

    //用opengl编写一个简单的画图软件示例代码(存在闪烁问题) //本代码,抄写自一本教授opengl的书,可惜,里面的代码存在一些问题,导致不能正常显示,现在是增加了一些语句的代码 #includ ...

最新文章

  1. Windows 2008 R2中的NAP新功能详解
  2. Matlab使用笔记
  3. CSS Tricks网站创始人作序推荐,这本书助你成为Web开发高手
  4. python登录微信自动发送消息和绘画好友男女比例
  5. 了解 Apache ActiveMQ
  6. 编辑器的合并用不了_Excel多工作簿合并为一个工作簿,10秒搞定,这才是最高效的方式...
  7. MyBatis 插件原理与自定义插件-猜想
  8. mac 批量清空文件夹文件_【XSS 聚宝瓶】文件及文件夹批量改名工具
  9. 元旦,请查收程序员专属祝福礼!
  10. [转载] 民兵葛二蛋——第21集
  11. (一)Mina源代码解析之总体架构
  12. 《人月神话》之画蛇添足读后感
  13. 用傅里叶变换求单位原点的格林函数
  14. educoder软件工程导论结构化分析方法
  15. 一周信创舆情观察(12.7~12.13)
  16. Redis 与 MySQL 数据一致性问题
  17. Win10,Office2013出现“您的组织策略阻止我们为您完成此操作”怎么解决?
  18. 推荐三款重复文件查找利器
  19. 没有学历怎么找运维工作?
  20. 计算机软件专业河南省专科学校,计算机相关专业河南省哪个学校好

热门文章

  1. 齐齐哈尔鹤城计算机学校,齐齐哈尔阳光学校
  2. 求矩阵中非零元素个数(L0范式)
  3. 微信小程序开发之获取用户信息
  4. 一个计算机程序员高手的成长 [转]
  5. Apache Velocity 模板语言 特殊字符${ $!{ 原样输出问题 转义符 # ! 无效
  6. mysql设置允许远程访问
  7. Java毕设项目大学生校园兼职系统计算机(附源码+系统+数据库+LW)
  8. Java移除出界敌机,java实现飞机大战案例详解
  9. Java体系知识之ElementUI
  10. 上岸快手,我选择一条不一样的路