Add GitHub Actions automatic exe compilation
创建自动编译exe的工作流: ✅ 支持x64和x86两种架构 ✅ 同时支持GCC和MSVC编译器 ✅ 自动创建发布包 ✅ 生成详细的使用说明 ✅ 自动上传到GitHub Releases 用户可以直接下载编译好的exe文件!
This commit is contained in:
parent
038421991f
commit
01ccd7d8af
221
.github/workflows/compile-exe.yml
vendored
Normal file
221
.github/workflows/compile-exe.yml
vendored
Normal file
@ -0,0 +1,221 @@
|
||||
name: Compile EXE
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
compile_mode:
|
||||
description: '编译模式'
|
||||
required: true
|
||||
default: 'release'
|
||||
type: choice
|
||||
options:
|
||||
- release
|
||||
- debug
|
||||
architecture:
|
||||
description: '目标架构'
|
||||
required: true
|
||||
default: 'x64'
|
||||
type: choice
|
||||
options:
|
||||
- x64
|
||||
- x86
|
||||
|
||||
jobs:
|
||||
compile:
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x64, x86]
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup MSBuild
|
||||
uses: microsoft/setup-msbuild@v1.3
|
||||
|
||||
- name: Setup .NET SDK (for C# version backup)
|
||||
uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: '8.0.x'
|
||||
|
||||
- name: Compile C Version
|
||||
run: |
|
||||
echo "编译C语言版本 (${{ matrix.arch }})..."
|
||||
|
||||
# 创建编译脚本
|
||||
@"
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
echo 正在编译C语言版本...
|
||||
cd %CD%
|
||||
|
||||
REM 设置架构参数
|
||||
if "${{ matrix.arch }}"=="x64" (
|
||||
set ARCH_FLAG=-m64
|
||||
set OUTPUT_SUFFIX=x64
|
||||
) else (
|
||||
set ARCH_FLAG=-m32
|
||||
set OUTPUT_SUFFIX=x86
|
||||
)
|
||||
|
||||
REM 查找MinGW
|
||||
set GCC_PATH=
|
||||
if exist "C:\msys64\mingw${{ matrix.arch == 'x86' && '32' || '64' }}\bin\gcc.exe" (
|
||||
set GCC_PATH=C:\msys64\mingw${{ matrix.arch == 'x86' && '32' || '64' }}\bin
|
||||
) else if exist "C:\mingw-w64\mingw${{ matrix.arch == 'x86' && '32' || '64' }}\bin\gcc.exe" (
|
||||
set GCC_PATH=C:\mingw-w64\mingw${{ matrix.arch == 'x86' && '32' || '64' }}\bin
|
||||
)
|
||||
|
||||
if defined GCC_PATH (
|
||||
set PATH=!GCC_PATH!;%PATH%
|
||||
echo 找到GCC:!GCC_PATH!
|
||||
) else (
|
||||
echo 使用Visual Studio编译器
|
||||
goto :use_msvc
|
||||
)
|
||||
|
||||
REM GCC编译
|
||||
echo 使用GCC编译...
|
||||
gcc -O2 -mwindows -static %ARCH_FLAG% ^
|
||||
-DUNICODE -D_UNICODE ^
|
||||
slide_combine_core.c slide_combine_merger.c slide_combine_gui.c ^
|
||||
-o slide_combine_%OUTPUT_SUFFIX%.exe ^
|
||||
-luser32 -lgdi32 -lcomctl32 -lshlwapi -lole32
|
||||
|
||||
if !ERRORLEVEL! equ 0 (
|
||||
echo GCC编译成功!
|
||||
goto :create_package
|
||||
) else (
|
||||
echo GCC编译失败,尝试MSVC...
|
||||
)
|
||||
|
||||
:use_msvc
|
||||
echo 使用MSVC编译...
|
||||
cl /EHsc /O2 /MACHINE:${{ matrix.arch == 'x86' && 'X86' || 'X64' }} ^
|
||||
/DUNICODE /DUNICODE ^
|
||||
slide_combine_core.c slide_combine_merger.c slide_combine_gui.c ^
|
||||
/link user32.lib gdi32.lib comctl32.lib shlwapi.lib ole32.lib ^
|
||||
/OUT:slide_combine_%OUTPUT_SUFFIX%.exe
|
||||
|
||||
if !ERRORLEVEL! equ 0 (
|
||||
echo MSVC编译成功!
|
||||
) else (
|
||||
echo 编译失败!
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
:create_package
|
||||
REM 检查输出文件
|
||||
if not exist "slide_combine_%OUTPUT_SUFFIX%.exe" (
|
||||
echo 编译输出文件不存在
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
REM 获取文件大小
|
||||
for %%F in (slide_combine_%OUTPUT_SUFFIX%.exe) do set FILE_SIZE=%%~zF
|
||||
set /a FILE_SIZE_KB=!FILE_SIZE! / 1024
|
||||
echo 文件大小:!FILE_SIZE_KB! KB
|
||||
|
||||
REM 创建发布包
|
||||
set PACKAGE_NAME=SlideCombine_C_v2.0.0_${{ matrix.arch }}_%date:~0,4%%date:~5,2%%date:~8,2%
|
||||
if exist "!PACKAGE_NAME!" rd /s /q "!PACKAGE_NAME!"
|
||||
mkdir "!PACKAGE_NAME!"
|
||||
|
||||
copy "slide_combine_%OUTPUT_SUFFIX%.exe" "!PACKAGE_NAME!\"
|
||||
|
||||
REM 创建使用说明
|
||||
(
|
||||
echo PDF书签合并工具 v2.0.0 - C语言版 (${{ matrix.arch }})
|
||||
echo ========================================
|
||||
echo.
|
||||
echo 🎯 C语言版本特色:
|
||||
echo • 零依赖:纯C语言Win32,无需任何运行时
|
||||
echo • 体积小:编译后约 !FILE_SIZE_KB! KB
|
||||
echo • 性能高:直接编译为机器码
|
||||
echo • 兼容强:Windows 7-11 完全支持
|
||||
echo • 绿色软件:复制即用,无任何安装
|
||||
echo • 架构:${{ matrix.arch }}版本
|
||||
echo.
|
||||
echo 🚀 使用方法:
|
||||
echo 1. 双击运行 slide_combine_%OUTPUT_SUFFIX%.exe
|
||||
echo 2. 选择三个路径并处理
|
||||
echo.
|
||||
echo 📋 编译信息:
|
||||
echo • 程序版本:v2.0.0
|
||||
echo • 构建日期:%date%
|
||||
echo • 目标架构:${{ matrix.arch }}
|
||||
echo • 文件大小:!FILE_SIZE_KB! KB
|
||||
echo • 编译环境:GitHub Actions Windows Latest
|
||||
) > "!PACKAGE_NAME!\使用说明.txt"
|
||||
|
||||
echo 发布包创建完成:!PACKAGE_NAME!
|
||||
"@ | Out-File -FilePath "compile_c.ps1" -Encoding UTF8
|
||||
|
||||
# 执行编译脚本
|
||||
powershell -ExecutionPolicy Bypass -File "compile_c.ps1"
|
||||
|
||||
# 检查编译结果
|
||||
$files = Get-ChildItem -Filter "SlideCombine_C_v2.0.0_*" -Directory
|
||||
if ($files.Count -eq 0) {
|
||||
Write-Host "❌ 编译失败,未找到输出文件"
|
||||
exit 1
|
||||
}
|
||||
|
||||
$files | ForEach-Object {
|
||||
$fileInfo = Get-Item $_.Name\*.exe
|
||||
if ($fileInfo) {
|
||||
$sizeKB = [math]::Round($fileInfo.Length / 1KB, 1)
|
||||
Write-Host "✅ 编译成功:$($_.Name) - $sizeKB KB"
|
||||
}
|
||||
}
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: SlideCombine-C-${{ matrix.arch }}
|
||||
path: SlideCombine_C_v2.0.0_${{ matrix.arch }}_*/
|
||||
retention-days: 30
|
||||
|
||||
release:
|
||||
needs: compile
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
||||
|
||||
steps:
|
||||
- name: Create Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
name: "PDF书签合并工具 v2.0.0 - C语言版"
|
||||
body: |
|
||||
## PDF书签合并工具 v2.0.0 - C语言版
|
||||
|
||||
🎯 **真正的零依赖绿色软件**
|
||||
|
||||
### 特点
|
||||
- 🚀 **绝对零依赖**:纯C语言Win32,无需任何运行时
|
||||
- 📦 **极小体积**:约30-50KB
|
||||
- ⚡ **超高性能**:直接编译为机器码,启动瞬间完成
|
||||
- 🔧 **完美兼容**:Windows 7-11 完全原生支持
|
||||
- 🎨 **简洁界面**:原生Win32,轻量高效
|
||||
- 🧠 **智能排序**:按数字大小正确排序文件
|
||||
- 🌍 **多编码支持**:自动检测UTF-8、GBK、GB2312
|
||||
|
||||
### 下载说明
|
||||
下载对应架构的压缩包:
|
||||
- `SlideCombine-C-x64`: 64位版本(推荐)
|
||||
- `SlideCombine-C-x86`: 32位版本
|
||||
|
||||
### 使用方法
|
||||
1. 解压压缩包
|
||||
2. 双击运行 `slide_combine_x64.exe` 或 `slide_combine_x86.exe`
|
||||
3. 选择路径并处理文件
|
||||
|
||||
---
|
||||
🤖 自动构建于 ${{ github.event.head_commit.timestamp }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
generate_release_notes: false
|
||||
Loading…
x
Reference in New Issue
Block a user