ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-01-10 22:02:58  阅读:196  来源: 互联网

标签:文件 bat exe Qt 生成器 编译器 64


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

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


文章目录


前言

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


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

一、命令行执行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)属性
接着说如果使用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。

D:\Qt\Qt5.12.10\Tools\mingw730_64\bin

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_64

CD /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实现一个编译器,听起来很难,实际操作起来其实很简单,总的来说就是,创建两个项目,一个是所谓编译器,另一个是被执行项目,编译器的功能只是调用命令行来编译被执行项目。

标签:文件,bat,exe,Qt,生成器,编译器,64
来源: https://blog.csdn.net/happi_er/article/details/122412962

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有