secondvoice/docs/build_windows.md
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

441 lines
8.2 KiB
Markdown

# Building SecondVoice on Windows
**Platform**: Windows 10/11
**Compiler**: Visual Studio 2019 or later
**Package Manager**: vcpkg
---
## 📋 Prerequisites
### 1. Install Visual Studio
Download and install **Visual Studio 2022 Community** (free):
- URL: https://visualstudio.microsoft.com/downloads/
- During installation, select:
-**Desktop development with C++**
-**C++ CMake tools for Windows**
-**C++ Clang tools for Windows** (optional)
### 2. Install vcpkg
Open **PowerShell** or **Command Prompt** and run:
```powershell
# Clone vcpkg
cd C:\
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
# Bootstrap vcpkg
.\bootstrap-vcpkg.bat
# Set environment variable (requires Admin or restart)
setx VCPKG_ROOT "C:\vcpkg"
```
**Important**: After setting `VCPKG_ROOT`, restart your terminal or IDE.
### 3. Install Git (if not already installed)
Download from: https://git-scm.com/download/win
---
## 🚀 Quick Build
### Option 1: Using build.bat (Recommended)
```batch
# Navigate to project directory
cd "E:\Users\Alexis Trouvé\Documents\Projets\secondvoice"
# Build release version
build.bat --release
# Or build debug version
build.bat --debug
# Clean build
build.bat --clean --release
```
### Option 2: Using CMake Directly
```batch
# Configure
cmake --preset windows-release
# Build
cmake --build build/windows-release --config Release
```
---
## 📝 Step-by-Step Build Guide
### Step 1: Clone the Repository
```batch
cd "E:\Users\Alexis Trouvé\Documents\Projets"
git clone <repository-url> secondvoice
cd secondvoice
```
### Step 2: Create .env File
```batch
# Copy template
copy .env.example .env
# Edit with your API keys
notepad .env
```
Add your API keys:
```env
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
```
### Step 3: Build the Project
**Using build.bat** (easier):
```batch
build.bat --release
```
**Using CMake** (manual):
```batch
# Configure
cmake -B build/windows-release ^
-DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake ^
-DCMAKE_BUILD_TYPE=Release ^
-G Ninja
# Build
cmake --build build/windows-release --config Release
```
### Step 4: Run the Application
```batch
cd build\windows-release\Release
SecondVoice.exe
```
---
## 🔧 Build Options
### Debug vs Release
**Debug** (with debugging symbols):
```batch
build.bat --debug
```
**Release** (optimized, no debug symbols):
```batch
build.bat --release
```
### Clean Build
To rebuild from scratch:
```batch
build.bat --clean --release
```
---
## 📦 Dependencies (Installed Automatically)
vcpkg will automatically download and build:
- **portaudio** - Audio capture
- **cpp-httplib** - HTTP client
- **nlohmann-json** - JSON parsing
- **imgui** - UI framework
- **glfw3** - Window management
- **opengl** - Graphics
**First build will take 5-15 minutes** as vcpkg compiles all dependencies.
Subsequent builds are much faster (incremental).
---
## 🎯 Output Locations
### Release Build
```
build/windows-release/Release/SecondVoice.exe
```
### Debug Build
```
build/windows-debug/Debug/SecondVoice.exe
```
### Dependencies
```
build/windows-release/vcpkg_installed/x64-windows/
```
---
## 🐛 Troubleshooting
### Error: "VCPKG_ROOT not set"
**Solution**:
```batch
# Set environment variable
setx VCPKG_ROOT "C:\vcpkg"
# Restart terminal
# Verify
echo %VCPKG_ROOT%
```
### Error: "cl.exe not found"
**Solution**: Visual Studio not in PATH
1. Open **Visual Studio Developer Command Prompt**
2. Or run: `"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"`
3. Then run `build.bat`
### Error: "Ninja not found"
**Solution**:
```batch
# Install ninja via vcpkg
%VCPKG_ROOT%\vcpkg install ninja
# Or install manually
# Download from: https://github.com/ninja-build/ninja/releases
# Add to PATH
```
### Error: "portaudio not found"
**Solution**: vcpkg integration issue
```batch
# Reset vcpkg integration
%VCPKG_ROOT%\vcpkg integrate remove
%VCPKG_ROOT%\vcpkg integrate install
# Clean and rebuild
build.bat --clean --release
```
### Error: "No audio device found"
**Causes**:
- No microphone connected
- Microphone disabled in Windows settings
- Audio drivers not installed
**Solution**:
1. Connect a microphone
2. Check **Settings → System → Sound → Input**
3. Verify device shows in **Device Manager**
### Error: "Failed to open window"
**Causes**:
- Graphics drivers outdated
- OpenGL not supported
**Solution**:
1. Update graphics drivers (NVIDIA/AMD/Intel)
2. Test OpenGL: Run `glxinfo` or similar tool
3. Check Windows Event Viewer for errors
---
## 🔍 Verification
### Check Build Success
After successful build:
```batch
dir build\windows-release\Release\SecondVoice.exe
```
Should show:
```
SecondVoice.exe ~5-10 MB
```
### Test Run
```batch
cd build\windows-release\Release
# Copy config.json if not present
copy ..\..\..\config.json .
# Copy .env if not present
copy ..\..\..\.env .
# Run
SecondVoice.exe
```
**Expected behavior**:
1. Console window opens
2. ImGui window appears
3. "Recording..." message shows
4. No immediate errors
---
## 📊 Build Performance
### First Build
- **Duration**: 5-15 minutes (vcpkg downloads + compiles dependencies)
- **Disk Space**: ~2 GB (vcpkg cache + build artifacts)
### Incremental Build
- **Duration**: 10-30 seconds (only changed files)
- **Disk Space**: +50 MB per build
### Clean Build
- **Duration**: 1-2 minutes (no dependency recompilation)
---
## 🚀 Distribution
### Creating Portable .exe
To distribute to other Windows machines:
1. **Build Release** (not Debug):
```batch
build.bat --release
```
2. **Collect Files**:
```
SecondVoice/
├── SecondVoice.exe
├── config.json
├── .env.example (for user to fill)
└── recordings/ (empty folder)
```
3. **Include DLLs** (if not statically linked):
```batch
# Copy vcpkg DLLs
copy build\windows-release\vcpkg_installed\x64-windows\bin\*.dll .
```
4. **Test on Clean Machine**:
- No vcpkg required
- No Visual Studio required
- Only needs Windows 10/11 + microphone
### Dependencies to Include
If dynamic linking (check with `dumpbin /dependents SecondVoice.exe`):
- `portaudio.dll`
- `glfw3.dll`
- MSVC Runtime (usually pre-installed on Windows 10/11)
---
## 💡 Tips & Tricks
### Use CMakePresets (Recommended)
The project includes `CMakePresets.json` with optimized settings:
```batch
# List available presets
cmake --list-presets
# Use preset
cmake --preset windows-release
cmake --build --preset windows-release
```
### Use Visual Studio GUI
1. Open **Visual Studio 2022**
2. **File → Open → Folder** → Select `secondvoice/`
3. Visual Studio auto-detects CMake
4. Select **windows-release** configuration
5. **Build → Build All**
### Enable Parallel Builds
In `build.bat`, CMake automatically uses all cores with Ninja.
For Visual Studio:
```batch
cmake --build build/windows-release --config Release -- /m
```
### Watch Build Progress
```batch
cmake --build build/windows-release --config Release --verbose
```
---
## 🔐 Security Considerations
### API Keys
- ⚠️ **Never commit .env** to git (already in .gitignore)
- ⚠️ Store .env securely (not in cloud sync folders)
- ⚠️ Use environment variables for production
### Recordings
- Audio files saved to `recordings/` by default
- Contains sensitive conversations
- Consider encryption or secure storage
- Regular cleanup recommended
---
## 📚 Additional Resources
### Windows-Specific Documentation
- [vcpkg on Windows](https://vcpkg.io/en/getting-started.html)
- [CMake Visual Studio Generator](https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2017%202022.html)
- [Windows Audio APIs](https://docs.microsoft.com/en-us/windows/win32/coreaudio/core-audio-apis-in-windows-vista)
### Visual Studio Tips
- Use **Ctrl+Shift+B** to build
- Use **F5** to build + run (debug mode)
- Use **Ctrl+F5** to run without debugging
- Check **Output** window for build logs
---
## 🎯 Next Steps
After successful build:
1. ✅ Test audio capture with microphone
2. ✅ Verify API keys in `.env`
3. ✅ Run first test with sample Chinese audio
4. ✅ Check transcription quality
5. ✅ Test in real meeting scenario
See `docs/next_steps.md` for testing guide.
---
*Last updated: 20 novembre 2025*
*Platform: Windows 10/11 x64*
*Build System: CMake + vcpkg + Ninja*