Qt半自动编译设置
导出环境变量
首先确保 Qt 环境下代码正常编译,然后导出对应的环境变量,否则会出现环境相关的问题,比如:
相关配置说明:使用的是pwsh
(powershell 7),直接使用cmd
会有问题
比如设置:
打开对应的控制台:
执行导出
Get-ChildItem Env: | ForEach-Object {
$name = $_.Name
$value = $_.Value -replace '"', '`"'
if ($name -match '[^a-zA-Z0-9_]') {
'${env:' + $name + '} = "' + $value + '"'
} else {
'$env:' + $name + ' = "' + $value + '"'
}
} | Set-Content -Encoding UTF8 "qt_env.ps1
使用方式
. .\qt_env.ps1
个人使用示例
项目结构
分为了三个文件:
- main.ps1,控制流程
- build.ps1,控制构建
- code-update.ps1,控制代码获取
main.ps1
param (
[string]$Note = "无更新说明"
)
./auto_build/code-update.ps1
./auto_build/build.ps1
# 时间戳
$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
# 路径配置
$exeSource = "D:\work\project\my-serial\build\Desktop_Qt_6_9_1_MSVC2022_64bit-Release\MySerial.exe"
$latestDir = "C:\Users\vv\Desktop\output\latest"
$outputDir = "C:\Users\vv\Desktop\output"
$updateFile = Join-Path $outputDir "update.txt"
# 创建目标目录(如不存在)
if (-Not (Test-Path $latestDir)) {
New-Item -Path $latestDir -ItemType Directory | Out-Null
}
# 复制可执行文件
Write-Host ">> 正在复制 MySerial.exe 到 latest 文件夹..."
Copy-Item -Path $exeSource -Destination $latestDir -Force
# 压缩 latest 文件夹为 zip
$zipFileName = "MySerial_$timestamp.zip"
$zipFilePath = Join-Path $outputDir $zipFileName
Write-Host ">> 正在压缩为 $zipFileName..."
Compress-Archive -Path "$latestDir\*" -DestinationPath $zipFilePath -Force
# 写入更新说明
Write-Host ">> 写入更新说明到 update.txt..."
Add-Content -Path $updateFile -Value "`n时间戳:$timestamp"
Add-Content -Path $updateFile -Value "更新:$Note"
Write-Host "✅ 打包完成:$zipFilePath"
Write-Host "📝 更新说明:${updateFile}"
build.ps1
. .\qt_env.ps1
&"D:\Qt\Tools\CMake_64\bin\cmake.exe" --build D:/work/project/my-serial/build/Desktop_Qt_6_9_1_MSVC2022_64bit-Release --target all
code-update.ps1
git -C "D:\work\project\my-serial" pull
comment:
- Valine
- LiveRe
- ChangYan