Qt中Windows端应用工程搭建
Updated:
Contents
工程建立
链接
Debug or Release
Window App在编译Debug or Release模式时会找对应的Qt包,QtCored.dll是Debug需要的,QtCore.dll是Release需要的,Debug的库命名方式后面多了一个d,在应用打包环境需要注意
其他SDK集成
- OpenCV编译出来的版本一般有两个维度,除了常见的CPU位数,还有VS版本,开发App和打包阶段需要把App的VS环境和CPU位数考虑进去
- 当集成许多SDK时,保证每个SDK都统一成Debug版本或者Release版本
NSIS应用打包
NSIS是Windows上面的开源打包工具,用类似汇编和Shell混合的语言来构建一个安装程序,支持c、c++语言实现的插件,功能很全。
架构
NSIS以每个页面为单元构建一个安装包,开发者在对应页面中完成相应代码,NSIS用;代表注释
Page和UninstPage
Page custom WelcomePage |
翻页
Function Next_Page |
官方例子
生命周期
.onInit –> .onGUIInit –> Pages –> un.onInit –> un.onGUIInit –> un.Pages
!define MUI_CUSTOMFUNCTION_GUIINIT onGUIInit |
Shell风格
NSIS从瀑布上执行流程,脚本中只有两个基本概念,变量和函数,和Shell很类似,变量从来源上分为系统变量、UI变量、用户自定义变量,函数分为系统函数和自定义函数
基本信息配置
Name "YourAppName" |
NSIS框架会读取这些信息来配置安装包
系统函数
CreateDirectory $YourDir; 创建目录 |
$Pb_Uninstall是组件变量,${PBM_SETPOS} 是系统变量,与UI组件交互一般用SendMessage方法
自定义函数
Function Your_Method |
汇编风格
通过Pop和Push命令和系统、第三方插件方法进行数据交互,很汇编的写法,常用Pop方法获取系统调用结果。
判断互斥
System::Call 'kernel32::CreateMutex(i 0, i 0, t "${INSTALL_NAME}") ?e' |
Pop命令获取System::Call的结果,存放到$R0里面
创建组件及其注册事件
${NSD_CreateButton} 454 13 14 14 "" |
${NSD_CreateButton}里面存放一个创建UI的方法
组件联动
NSIS中很多组件的效果需要开发人员完成,例如下面的Checkbox效果,通过Checkbox来控制某个按钮是否可以点击,
${IF} $IS_AgreeLicence == 1 |
隐藏组件
GetDlgItem $0 $HWNDPARENT 1034 |
$HWNDPARENT和${SW_HIDE}是系统变量
Kill进程
StrCpy $0 "YourAppName" |
把AppName放入$0中,KillProc::KillProcesses从$0里取参数