SlideCombine/.github/workflows/compile-exe.yml
Workflow config file is invalid. Please check your config file: yaml: line 50: found character that cannot start any token
yuuko 01ccd7d8af Add GitHub Actions automatic exe compilation
创建自动编译exe的工作流:
 支持x64和x86两种架构
 同时支持GCC和MSVC编译器
 自动创建发布包
 生成详细的使用说明
 自动上传到GitHub Releases

用户可以直接下载编译好的exe文件!
2025-11-25 13:28:50 +08:00

221 lines
6.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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