news 2026/10/20 1:57:23

build.bat

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
build.bat
@echo off setlocal call C:\software\Qt5.5.1\5.5\mingw492_32\bin\qtenv2.bat cd /d D:\project\zhzh\ChartApp C:\software\Qt5.5.1\5.5\mingw492_32\bin\qmake.exe ChartApp.pro -spec win32-g++ C:\software\Qt5.5.1\Tools\mingw492_32\bin\mingw32-make.exe %* if errorlevel 1 exit /b 1 if exist bin\ChartApp.exe ( C:\software\Qt5.5.1\5.5\mingw492_32\bin\windeployqt.exe --release --no-translations bin\ChartApp.exe ) echo Build OK: ChartApp\bin\ChartApp.exe echo Enclib: ..\Enclib_windows\Enclib endlocal

参考文件:

Windows 批处理文件 xxx.bat-CSDN博客


这个.bat文件是一个Qt 项目的编译构建脚本,用于在 Windows 下使用 MinGW 编译器编译ChartApp.pro项目,并自动部署所需的 Qt 运行库。


第 1 行:@echo off

关闭命令回显,执行时不显示每行命令本身,让输出更清爽。


第 2 行:setlocal

开始局部环境变量作用域,后续设置的变量和路径修改只在脚本内有效,不影响系统全局环境。


第 3 行:call C:\software\Qt5.5.1\5.5\mingw492_32\bin\qtenv2.bat

  • call用于调用另一个批处理文件,并等待它执行完毕后返回继续执行当前脚本。

  • qtenv2.bat是 Qt 自带的环境配置脚本,它会自动设置 Qt 相关的环境变量(如PATH、QTDIR等),让后续的qmake、mingw32-make等命令能够找到对应的库和工具。

  • 如果不用call直接写路径,脚本会跳转到那个 BAT 文件执行且不再返回,后面的命令都不会执行。


第 4 行:cd /d D:\project\zhzh\ChartApp

切换到项目源码根目录(ChartApp.pro所在的位置)。


第 5 行:C:\software\Qt5.5.1\5.5\mingw492_32\bin\qmake.exe ChartApp.pro -spec win32-g++

  • 调用qmake生成 Makefile。

  • ChartApp.pro是 Qt 项目文件。

  • -spec win32-g++指定使用 MinGW 编译器(而不是 MSVC)。

  • 执行后会在当前目录生成Makefile和Makefile.Debug/Makefile.Release等文件。


第 6 行:C:\software\Qt5.5.1\Tools\mingw492_32\bin\mingw32-make.exe %*

  • 调用mingw32-make(MinGW 的 make 工具)根据刚才生成的 Makefile 进行编译和链接。

  • %*表示将调用本脚本时传入的所有参数原样传递给 make。例如,如果你执行build.bat -j4,那么-j4会被传给 make,实现多核并行编译。

  • 如果编译过程中出错,mingw32-make会返回非零错误码。


第 7 行:if errorlevel 1 exit /b 1

  • errorlevel是上一条命令的返回值(mingw32-make的退出码)。

  • 如果errorlevel >= 1(即编译失败),立即退出脚本,并返回1(表示失败)。

  • /b 1表示退出当前批处理脚本(而不是关闭整个 CMD 窗口),返回码为1。


第 8-10 行:if exist bin\ChartApp.exe ( ... )

  • 检查编译出的可执行文件bin\ChartApp.exe是否存在。

  • 如果存在,则执行windeployqt.exe(Qt 官方部署工具):

    • --release:只部署Release 版本的库(不包含 Debug 版本)。

    • --no-translations:不复制翻译文件(.qm文件)。

    • bin\ChartApp.exe:指定目标 exe 文件。

  • windeployqt会自动将程序依赖的 Qt 核心库(如Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll等)和必要的插件(如 platforms 目录)复制到bin目录下,让 exe 可以在没有安装 Qt 的电脑上直接运行。


第 11 行:echo Build OK: ChartApp\bin\ChartApp.exe

输出构建成功的提示信息,告诉用户生成的可执行文件位置。


第 12 行:echo Enclib: ..\Enclib_windows\Enclib

输出一个额外的提示信息,可能用于提醒依赖库(Enclib)的位置(Enclib_windows可能是加密或底层库)。这只是输出文字,并没有实际复制或操作该库。


第 13 行:endlocal

结束setlocal开启的局部环境,恢复脚本执行前的环境变量状态(包括PATH等)。


为了适配我的电脑(我安装的是Qt5.12.8),我修改了下脚本内容:

rem @echo off rem setlocal call D:\Qt\Qt5.12.8\5.12.8\mingw73_32\bin\qtenv2.bat cd /d D:\QtCode\zhzhv1\ChartApp D:\Qt\Qt5.12.8\5.12.8\mingw73_32\bin\qmake.exe ChartApp.pro -spec win32-g++ D:\Qt\Qt5.12.8\Tools\mingw730_32\bin\mingw32-make.exe %* if errorlevel 1 exit /b 1 if exist bin\ChartApp.exe ( D:\Qt\Qt5.12.8\5.12.8\mingw73_32\bin\windeployqt.exe --release --no-translations bin\ChartApp.exe ) echo Build OK: ChartApp\bin\ChartApp.exe echo Enclib: ..\Enclib_windows\Enclib rem endlocal pause

运行了下程序,没有什么问题,可以正常运行。


我执行.bat,直接双击,但这样看不了打印信息啊?

在文件末尾加pause(最简单)

在脚本最后一行加上pause,窗口就会停留在“按任意键继续...”的状态

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/20 1:57:11

Habitat-Lab快速上手:从安装到跑通示例

Habitat-Lab快速上手:从安装到跑通示例 【免费下载链接】habitat-lab A modular high-level library to train embodied AI agents across a variety of tasks and environments. 项目地址: https://gitcode.com/GitHub_Trending/ha/habitat-lab Habitat-Lab…

作者头像 李华
网站建设 2026/10/20 1:55:34

Muse桌面AI Agent:边缘智能硬件协议栈解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华