vulcast-vertical/build-vulcast-vertical.ps1
Vulcast 59d81726eb
Some checks failed
Build Windows DLL / Build for Windows (push) Has been cancelled
fix: use cmake -C cache file to avoid cmd line length limit
2026-06-30 20:50:24 +01:00

73 lines
3.6 KiB
PowerShell

#Requires -Version 5.1
<#
.SYNOPSIS
Build Vulcast Vertical OBS plugin - v8 (uses cmake cache file)
#>
param()
$ErrorActionPreference = 'Stop'
$CacheDir = Join-Path $env:LOCALAPPDATA "vulcast-build"
$PluginDir = Join-Path $CacheDir "vulcast-vertical"
$buildDir = Join-Path $PluginDir "build_x64"
Write-Host "=== Vulcast Vertical Build v8 ===" -ForegroundColor Cyan
# 1. Find VS Build Tools
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
if (!(Test-Path $vswhere)) { throw "VS Build Tools not found" }
$installPath = & $vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath 2>$null
if (!$installPath) { throw "VS Build Tools not found" }
$vcvarsall = Join-Path $installPath "VC\Auxiliary\Build\vcvarsall.bat"
# 2. Download and extract plugin source
if (!(Test-Path (Join-Path $PluginDir "CMakeLists.txt"))) {
Write-Host "[1/4] Downloading source..." -ForegroundColor Cyan
if (Test-Path $PluginDir) { Remove-Item $PluginDir -Recurse -Force }
New-Item -ItemType Directory -Path $CacheDir -Force | Out-Null
$zipPath = Join-Path $CacheDir "vulcast-vertical-latest.zip"
Invoke-WebRequest -Uri "https://vulcast.xyz/dl/vulcast-vertical-latest.zip" -OutFile $zipPath
Expand-Archive -Path $zipPath -DestinationPath $PluginDir -Force
$inner = Get-ChildItem -Path $PluginDir -Directory | Select-Object -First 1
if ($inner -and (Test-Path (Join-Path $inner.FullName "CMakeLists.txt"))) {
Get-ChildItem -Path $inner.FullName -Force | Move-Item -Destination $PluginDir -Force
Remove-Item $inner.FullName -Recurse -Force -ErrorAction SilentlyContinue
}
} else {
Write-Host "[1/4] Source cached." -ForegroundColor Green
}
# 3. Write cmake initial cache file (avoids long command line)
Write-Host "[2/4] Writing cmake cache..." -ForegroundColor Cyan
$cacheFile = Join-Path $buildDir "vulcast-init.cmake"
New-Item -ItemType Directory -Path $buildDir -Force | Out-Null
$cacheContent = @"
set(CMAKE_BUILD_TYPE Release CACHE STRING "")
set(CMAKE_SYSTEM_VERSION "10.0.18363.657" CACHE STRING "")
set(QT_VERSION "6" CACHE STRING "")
"@
Set-Content -Path $cacheFile -Value $cacheContent -Encoding UTF8
# 4. Configure cmake using -C flag (short command line)
Write-Host "[3/4] Configuring cmake..." -ForegroundColor Cyan
$configureCmd = "cmake -S `"$PluginDir`" -B `"$buildDir`" -G `"Visual Studio 17 2022`" -A x64 -C `"$cacheFile`""
cmd /c "call `"$vcvarsall`" x64 && $configureCmd"
if ($LASTEXITCODE -ne 0) { throw "cmake configure failed" }
# 5. Build
Write-Host "[4/4] Building DLL..." -ForegroundColor Cyan
cmd /c "call `"$vcvarsall`" x64 && cmake --build `"$buildDir`" --config Release"
if ($LASTEXITCODE -ne 0) { throw "Build failed" }
# Find and install DLL
$dll = Get-ChildItem -Path $buildDir -Recurse -Filter "vulcast-vertical.dll" -ErrorAction SilentlyContinue | Select-Object -First 1
if (!$dll) { $dll = Get-ChildItem -Path $buildDir -Recurse -Filter "vertical-canvas.dll" -ErrorAction SilentlyContinue | Select-Object -First 1 }
if (!$dll) { $dll = Get-ChildItem -Path $buildDir -Recurse -Filter "*.dll" -ErrorAction SilentlyContinue | Where-Object { $_.FullName -notmatch "Qt6|obs" } | Select-Object -First 1 }
if ($dll) {
$pluginsDir = Join-Path $env:ProgramFiles "obs-studio\obs-plugins\64bit"
if (!(Test-Path $pluginsDir)) { $pluginsDir = Join-Path $CacheDir "obs-plugins"; New-Item -ItemType Directory -Path $pluginsDir -Force | Out-Null }
Copy-Item $dll.FullName $pluginsDir -Force
Write-Host "`nDone! DLL: $pluginsDir\$($dll.Name)" -ForegroundColor Green
} else {
throw "DLL not found"
}