Files
geek-life/BUILD-WINDOWS.md

87 lines
2.3 KiB
Markdown

# Building Geek-life for Windows
This document explains how to build and run Geek-life on Windows systems.
## Prerequisites
- Go 1.14 or later installed on your system
- PowerShell (comes with Windows)
## Building the Application
### Option 1: Using the Windows Build Script (Recommended)
Run the PowerShell build script to build for all Windows architectures:
```powershell
.\build-windows.ps1
```
This will create optimized executables for:
- Windows AMD64 (64-bit) - `geek-life_windows-amd64.exe`
- Windows 386 (32-bit) - `geek-life_windows-386.exe`
- Windows ARM64 - `geek-life_windows-arm64.exe`
### Option 2: Manual Build
For a simple build without optimization:
```powershell
go build -o builds/geek-life.exe ./app
```
For an optimized build (smaller file size):
```powershell
$env:GOOS="windows"
$env:GOARCH="amd64"
go build -ldflags="-s -w" -o builds/geek-life_windows-amd64.exe ./app
```
## Running the Application
After building, you can run the application:
```powershell
# For the optimized AMD64 version (recommended for most users)
.\builds\geek-life_windows-amd64.exe
# For 32-bit systems
.\builds\geek-life_windows-386.exe
# For ARM64 systems
.\builds\geek-life_windows-arm64.exe
```
## Command Line Options
```powershell
.\builds\geek-life_windows-amd64.exe --help
```
Available options:
- `-d, --db-file string`: Specify DB file path manually
## File Structure
The main entry point is located in `app/cli.go` (not in a traditional `main.go` file at the root).
## Build Optimization
The build script uses the following optimization flags:
- `-ldflags="-s -w"`: Strips debug information and symbol table to reduce file size
- Results in approximately 30% smaller executable files
## Troubleshooting
1. **"go: command not found"**: Make sure Go is installed and added to your PATH
2. **Permission denied**: Run PowerShell as Administrator if needed
3. **Execution policy**: If you can't run the build script, run: `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser`
## Cross-compilation from Other Platforms
You can also build Windows executables from Linux/macOS:
```bash
# From Linux/macOS
env GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o builds/geek-life_windows-amd64.exe ./app
env GOOS=windows GOARCH=386 go build -ldflags="-s -w" -o builds/geek-life_windows-386.exe ./app
```