secondvoice/build.bat
StillHammer 99a9cc22d7 feat: Add Windows support with .exe build
Complete Windows build support for SecondVoice:

Build System:
- Added CMakePresets.json with Windows and Linux presets
- Created build.bat script for easy Windows builds
- Support for Visual Studio 2019+ with Ninja generator
- Automatic vcpkg integration and dependency installation

Scripts:
- build.bat with Debug/Release modes and clean builds
- Auto-detection of Visual Studio and compiler tools
- User-friendly error messages and setup instructions

Documentation:
- Comprehensive docs/build_windows.md guide
- Step-by-step Windows build instructions
- Troubleshooting section for common issues
- Distribution guide for portable .exe

Updates:
- Updated README.md with cross-platform instructions
- Enhanced .gitignore for Windows build artifacts
- Separate build directories for Windows/Linux

Platform Support:
- Windows 10/11 with Visual Studio 2019+
- Linux with GCC/Clang (existing)
- Shared vcpkg dependencies across platforms

Output:
- Windows: build/windows-release/Release/SecondVoice.exe
- Linux: build/SecondVoice

Next Steps:
- Build on Windows with: build.bat --release
- Executable ready for distribution
- Same config.json and .env work cross-platform

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-20 03:38:18 +08:00

156 lines
3.7 KiB
Batchfile

@echo off
REM Build script for SecondVoice on Windows
echo ========================================
echo SecondVoice - Windows Build Script
echo ========================================
echo.
REM Check if vcpkg is installed
if not defined VCPKG_ROOT (
echo [ERROR] VCPKG_ROOT environment variable not set
echo.
echo Please install vcpkg and set VCPKG_ROOT:
echo 1. git clone https://github.com/microsoft/vcpkg.git C:\vcpkg
echo 2. cd C:\vcpkg
echo 3. .\bootstrap-vcpkg.bat
echo 4. setx VCPKG_ROOT "C:\vcpkg"
echo 5. Restart your terminal
echo.
exit /b 1
)
echo [INFO] vcpkg found at: %VCPKG_ROOT%
echo.
REM Check if .env exists
if not exist ".env" (
echo [WARNING] .env file not found
echo Please create .env from .env.example and add your API keys:
echo copy .env.example .env
echo notepad .env
echo.
)
REM Check for Visual Studio or build tools
where cl >nul 2>&1
if %errorlevel% neq 0 (
echo [WARNING] Visual Studio compiler not found in PATH
echo.
echo Trying to find Visual Studio...
REM Try to find vcvarsall.bat
set "VSWHERE=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
if exist "%VSWHERE%" (
for /f "usebackq tokens=*" %%i in (`"%VSWHERE%" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do (
set "VS_PATH=%%i"
)
if defined VS_PATH (
echo [INFO] Found Visual Studio at: %VS_PATH%
call "%VS_PATH%\VC\Auxiliary\Build\vcvars64.bat"
) else (
echo [ERROR] Could not find Visual Studio
echo.
echo Please install Visual Studio 2019 or later with C++ tools:
echo https://visualstudio.microsoft.com/downloads/
echo.
exit /b 1
)
) else (
echo [ERROR] Could not find vswhere.exe
echo.
echo Please install Visual Studio 2019 or later:
echo https://visualstudio.microsoft.com/downloads/
echo.
exit /b 1
)
)
REM Check for Ninja
where ninja >nul 2>&1
if %errorlevel% neq 0 (
echo [INFO] Ninja not found, installing via vcpkg...
%VCPKG_ROOT%\vcpkg install ninja
)
REM Parse command line arguments
set BUILD_TYPE=Release
set CLEAN_BUILD=0
:parse_args
if "%~1"=="" goto :done_parsing
if /i "%~1"=="--debug" (
set BUILD_TYPE=Debug
shift
goto :parse_args
)
if /i "%~1"=="--release" (
set BUILD_TYPE=Release
shift
goto :parse_args
)
if /i "%~1"=="--clean" (
set CLEAN_BUILD=1
shift
goto :parse_args
)
echo [WARNING] Unknown argument: %~1
shift
goto :parse_args
:done_parsing
echo [INFO] Build type: %BUILD_TYPE%
echo.
REM Clean build if requested
if %CLEAN_BUILD%==1 (
echo [INFO] Cleaning build directory...
if exist "build\windows-%BUILD_TYPE%" (
rmdir /s /q "build\windows-%BUILD_TYPE%"
)
echo.
)
REM Configure with CMake
echo [INFO] Configuring CMake...
cmake --preset windows-%BUILD_TYPE%
if %errorlevel% neq 0 (
echo.
echo [ERROR] CMake configuration failed
exit /b 1
)
echo.
echo [INFO] Building...
cmake --build build/windows-%BUILD_TYPE% --config %BUILD_TYPE%
if %errorlevel% neq 0 (
echo.
echo [ERROR] Build failed
exit /b 1
)
echo.
echo ========================================
echo [SUCCESS] Build completed!
echo ========================================
echo.
echo Executable location:
echo build\windows-%BUILD_TYPE%\%BUILD_TYPE%\SecondVoice.exe
echo.
echo To run the application:
echo cd build\windows-%BUILD_TYPE%\%BUILD_TYPE%
echo SecondVoice.exe
echo.
echo Make sure you have:
echo 1. Created .env with your API keys
echo 2. config.json is present (copied automatically)
echo 3. A microphone connected
echo.
exit /b 0