Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Release Windows (Ninja + Clang) | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| branches: | |
| - main # 建议加上这个,方便你在推送分支时直接测试 | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| runs-on: windows-latest | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Cache Intel IPP | |
| id: cache-ipp | |
| uses: actions/cache@v4 | |
| with: | |
| # 缓存 Intel oneAPI 的安装根目录 | |
| path: C:\Program Files (x86)\Intel\oneAPI | |
| key: ${{ runner.os }}-intel-ipp-2022.3.0 | |
| - name: Download and Install Intel IPP | |
| if: steps.cache-ipp.outputs.cache-hit != 'true' | |
| shell: pwsh | |
| run: | | |
| # 1. 定义你提供的链接 | |
| $url = "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/1ae68d0c-2b3f-4f39-9f53-774ca23088ec/intel-ipp-2022.3.0.393_offline.exe" | |
| Write-Host "Downloading Intel IPP Installer..." | |
| # 使用 curl.exe 并增加 -L (跟随重定向) 和 -A (伪装浏览器 User-Agent) | |
| # 这是绕过 Access Denied 的关键 | |
| curl.exe -L $url -o ipp_installer.exe -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" | |
| # 检查文件大小,如果下载的是报错页面(通常只有几百字节),则停止 | |
| $fileSize = (Get-Item ipp_installer.exe).Length | |
| if ($fileSize -lt 1000000) { | |
| Write-Error "Download failed: The file is too small ($fileSize bytes). Intel blocked the request." | |
| exit 1 | |
| } | |
| Write-Host "Installing Intel IPP (Silent)..." | |
| # 2. 执行静默安装 | |
| # --silent: 无界面安装 | |
| # --action install: 执行安装操作 | |
| # --accept_eula: 接受协议 | |
| Start-Process ./ipp_installer.exe -ArgumentList "--silent", "--action", "install", "--accept_eula" -Wait | |
| # 3. 清理安装包 | |
| Remove-Item ./ipp_installer.exe | |
| - name: Setup Ninja | |
| uses: llvm/actions/install-ninja@main | |
| - name: Set up MSVC Environment | |
| # 必须在 Configure 之前运行,确保 clang-cl 能找到系统头文件 | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| - name: Configure CMake | |
| shell: pwsh | |
| run: | | |
| # 手动指定 IPP 的 CMake 配置文件路径,确保 CMake 能找到它 | |
| $ipp_cmake_dir = "C:/Program Files (x86)/Intel/oneAPI/ipp/latest/lib/cmake/ipp" | |
| cmake -B build -G Ninja ` | |
| -DCMAKE_C_COMPILER=clang ` | |
| -DCMAKE_CXX_COMPILER=clang ` | |
| -DCMAKE_BUILD_TYPE=Release ` | |
| -DIPP_DIR="$ipp_cmake_dir" ` | |
| -DCI_PLUGIN_BUILD=1 ` | |
| -DCMAKE_PREFIX_PATH="C:/Program Files (x86)/Intel/oneAPI" | |
| - name: Build | |
| run: cmake --build build --config Release --parallel | |
| - name: Collect and Zip VST3 Plugins | |
| shell: pwsh | |
| run: | | |
| New-Item -ItemType Directory -Force -Path "./vst3_release" | |
| # 仅从 build 目录下寻找,排除脚本下载的第三方库目录 | |
| Get-ChildItem -Path "./build" -Filter "*.vst3" -Recurse | Where-Object { $_.Attributes -match "Directory" } | ForEach-Object { | |
| Write-Host "Found plugin: $($_.FullName)" | |
| Copy-Item -Path $_.FullName -Destination "./vst3_release/" -Recurse | |
| } | |
| if ((Get-ChildItem "./vst3_release/").Count -eq 0) { | |
| Write-Error "No VST3 plugins found! Check your build output." | |
| exit 1 | |
| } | |
| Compress-Archive -Path "./vst3_release/*" -DestinationPath "./Plugins_Windows_VST3.zip" | |
| - name: Upload Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: windows-vst3-zip | |
| path: Plugins_Windows_VST3.zip | |
| release: | |
| if: startsWith(github.ref, 'refs/tags/') | |
| needs: build | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Download Artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: windows-vst3-zip | |
| - name: Create Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: Plugins_Windows_VST3.zip | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |