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>
This commit is contained in:
parent
40c451b9f8
commit
99a9cc22d7
10
.gitignore
vendored
10
.gitignore
vendored
@ -9,15 +9,25 @@ vcpkg_installed/
|
||||
# IDE
|
||||
.vscode/
|
||||
.idea/
|
||||
.vs/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
*.user
|
||||
*.suo
|
||||
*.sln.docstates
|
||||
|
||||
# Compiled files
|
||||
*.o
|
||||
*.a
|
||||
*.so
|
||||
*.exe
|
||||
*.dll
|
||||
*.lib
|
||||
*.obj
|
||||
*.pdb
|
||||
*.ilk
|
||||
*.exp
|
||||
|
||||
# Environment and secrets
|
||||
.env
|
||||
|
||||
79
CMakePresets.json
Normal file
79
CMakePresets.json
Normal file
@ -0,0 +1,79 @@
|
||||
{
|
||||
"version": 3,
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "windows-base",
|
||||
"hidden": true,
|
||||
"generator": "Ninja",
|
||||
"binaryDir": "${sourceDir}/build/${presetName}",
|
||||
"cacheVariables": {
|
||||
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
|
||||
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "windows-debug",
|
||||
"displayName": "Windows x64 Debug",
|
||||
"inherits": "windows-base",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"CMAKE_CXX_FLAGS": "/W4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "windows-release",
|
||||
"displayName": "Windows x64 Release",
|
||||
"inherits": "windows-base",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release",
|
||||
"CMAKE_CXX_FLAGS": "/O2 /W4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linux-base",
|
||||
"hidden": true,
|
||||
"generator": "Ninja",
|
||||
"binaryDir": "${sourceDir}/build/${presetName}",
|
||||
"cacheVariables": {
|
||||
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
|
||||
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linux-debug",
|
||||
"displayName": "Linux x64 Debug",
|
||||
"inherits": "linux-base",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"CMAKE_CXX_FLAGS": "-Wall -Wextra"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linux-release",
|
||||
"displayName": "Linux x64 Release",
|
||||
"inherits": "linux-base",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release",
|
||||
"CMAKE_CXX_FLAGS": "-O3 -Wall -Wextra"
|
||||
}
|
||||
}
|
||||
],
|
||||
"buildPresets": [
|
||||
{
|
||||
"name": "windows-debug",
|
||||
"configurePreset": "windows-debug"
|
||||
},
|
||||
{
|
||||
"name": "windows-release",
|
||||
"configurePreset": "windows-release"
|
||||
},
|
||||
{
|
||||
"name": "linux-debug",
|
||||
"configurePreset": "linux-debug"
|
||||
},
|
||||
{
|
||||
"name": "linux-release",
|
||||
"configurePreset": "linux-release"
|
||||
}
|
||||
]
|
||||
}
|
||||
69
README.md
69
README.md
@ -17,20 +17,23 @@ SecondVoice captures audio, transcribes Chinese speech using OpenAI's Whisper AP
|
||||
|
||||
## Requirements
|
||||
|
||||
### System Dependencies (Linux)
|
||||
### Cross-Platform Support
|
||||
|
||||
```bash
|
||||
# PortAudio
|
||||
sudo apt install libasound2-dev
|
||||
SecondVoice works on **Windows** and **Linux**.
|
||||
|
||||
# OpenGL
|
||||
sudo apt install libgl1-mesa-dev libglu1-mesa-dev
|
||||
```
|
||||
#### Windows
|
||||
- Visual Studio 2019 or later (with C++ tools)
|
||||
- vcpkg package manager
|
||||
- See detailed guide: [docs/build_windows.md](docs/build_windows.md)
|
||||
|
||||
### vcpkg
|
||||
#### Linux
|
||||
- GCC/Clang with C++17 support
|
||||
- System dependencies: `libasound2-dev`, `libgl1-mesa-dev`, `libglu1-mesa-dev`
|
||||
- vcpkg package manager
|
||||
|
||||
Install vcpkg if not already installed:
|
||||
### vcpkg Installation
|
||||
|
||||
**Linux**:
|
||||
```bash
|
||||
git clone https://github.com/microsoft/vcpkg.git
|
||||
cd vcpkg
|
||||
@ -38,6 +41,14 @@ cd vcpkg
|
||||
export VCPKG_ROOT=$(pwd)
|
||||
```
|
||||
|
||||
**Windows**:
|
||||
```powershell
|
||||
git clone https://github.com/microsoft/vcpkg.git C:\vcpkg
|
||||
cd C:\vcpkg
|
||||
.\bootstrap-vcpkg.bat
|
||||
setx VCPKG_ROOT "C:\vcpkg"
|
||||
```
|
||||
|
||||
## Setup
|
||||
|
||||
1. **Clone the repository**
|
||||
@ -49,38 +60,52 @@ cd secondvoice
|
||||
|
||||
2. **Create `.env` file** (copy from `.env.example`)
|
||||
|
||||
**Linux**:
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# Edit .env and add your API keys:
|
||||
nano .env
|
||||
# Add your API keys:
|
||||
# OPENAI_API_KEY=sk-...
|
||||
# ANTHROPIC_API_KEY=sk-ant-...
|
||||
```
|
||||
|
||||
3. **Configure settings** (optional)
|
||||
**Windows**:
|
||||
```powershell
|
||||
copy .env.example .env
|
||||
notepad .env
|
||||
# Add your API keys
|
||||
```
|
||||
|
||||
Edit `config.json` to customize:
|
||||
- Audio chunk duration (default: 10s)
|
||||
- Sample rate (default: 16kHz)
|
||||
- UI window size
|
||||
- Output directory
|
||||
|
||||
4. **Build the project**
|
||||
3. **Build the project**
|
||||
|
||||
**Linux**:
|
||||
```bash
|
||||
# Configure with vcpkg
|
||||
cmake -B build -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
|
||||
./build.sh
|
||||
# Or manually:
|
||||
# cmake -B build -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
|
||||
# cmake --build build -j$(nproc)
|
||||
```
|
||||
|
||||
# Build
|
||||
cmake --build build -j$(nproc)
|
||||
**Windows**:
|
||||
```batch
|
||||
build.bat --release
|
||||
REM Or see detailed guide: docs/build_windows.md
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
**Linux**:
|
||||
```bash
|
||||
cd build
|
||||
./SecondVoice
|
||||
```
|
||||
|
||||
**Windows**:
|
||||
```batch
|
||||
cd build\windows-release\Release
|
||||
SecondVoice.exe
|
||||
```
|
||||
|
||||
The application will:
|
||||
1. Open an ImGui window
|
||||
2. Start capturing audio from your microphone
|
||||
|
||||
155
build.bat
Normal file
155
build.bat
Normal file
@ -0,0 +1,155 @@
|
||||
@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
|
||||
440
docs/build_windows.md
Normal file
440
docs/build_windows.md
Normal file
@ -0,0 +1,440 @@
|
||||
# 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*
|
||||
Loading…
Reference in New Issue
Block a user