# DataVu-PC — Build & Development Guide

A practical guide to building and working on the DataVu-PC project with the exact toolchain this codebase expects.

## Description

DataVu relies on an older Windows/MSVC/Qt stack. Using different versions (especially for Boost) will lead to hard-to-debug template/iterator errors. This README captures the known-good setup and steps to get a successful build on a 64‑bit Windows machine.

## Getting Started

### Dependencies

- **Windows (64-bit)**
- **MSVC 2013 Build Tools (v120)**
- **Qt 5.5.1 (64-bit, MSVC2013 kit)**
- **Boost 1.64.0**
- Project-specific “misc” folders included in the repository

### Installing

#### 1) MSVC 2013 Build Tools

1. Download “Visual Studio Community 2013 with Update 5” ISO (x86) and install.
2. After installation, set system environment variables (System‑wide, not just for your user). Add the following to **PATH** and move them near the top so they take priority:
   - `C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE`
   - `C:\Program Files (x86)\Windows Kits\8.1\bin\x64`
   - `C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64`
3. Create/update **LIB** with:
   - `C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\amd64`
   - `C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64`
   - `C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\shared\x64`
4. Create/update **INCLUDE** with:
   - `C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include`
   - `C:\Program Files (x86)\Windows Kits\8.1\Include\shared`
   - `C:\Program Files (x86)\Windows Kits\8.1\Include\um`
   - `C:\Program Files (x86)\Windows Kits\8.1\Include\winrt`

> Tip: Ensure these take precedence over any newer Visual Studio/Windows SDK entries to avoid mixing headers/libs across toolsets.

#### 2) Qt 5.5.1 (64‑bit, MSVC2013)

- Install Qt 5.5.1 with the **MSVC2013 64-bit** kit. This provides the correct mkspecs, Qt libraries, and Qt Creator kit for v120.

#### 3) Boost 1.64.0 (exact version)

1. Download Boost **1.64.0** as a ZIP archive.
2. Extract to `C:\boost` (recommended to simplify include/lib mappings).
3. Open **VS2013 x64 Native Tools Command Prompt** (Run as Administrator), `cd` into the extracted Boost directory.
4. Build Boost:
   ```bat
   bootstrap.bat
   b2 toolset=msvc-12.0 address-model=64 --build-type=complete stage
   ```
5. The generated `.lib` files will be under `stage\lib`. You can map these in your `.pro` or project settings as needed.

> Note: Using any Boost version other than 1.64.0 will likely cause failures in iterator/adapter code paths. Stick to 1.64.0.

## Executing program

Typical flow with Qt Creator (MSVC2013 64-bit kit):

1. Launch Qt Creator and select the **MSVC2013 64-bit** Kit.
2. Open the project (`.pro` or CMake/Qt project file used in this repo).
3. Configure for **Release** (recommended initially), then **Build**.
4. Run from Qt Creator, or launch the produced executable from the output folder.

## Help / Troubleshooting

- If you see template or iterator adaptor errors in Boost during compile, confirm you are on **Boost 1.64.0** and not a newer version.
- If the compiler picks the wrong SDK or MSVC headers, move the **PATH**, **LIB**, and **INCLUDE** entries listed above to the top of the respective lists so they win precedence.
- Ensure you are using the 64‑bit variants everywhere (MSVC, Qt kit, Boost address‑model).

## Authors

- Timothy Sibley

## Version History

- **0.1** — 2025‑08‑18: Initial setup notes and known‑good toolchain.

## License

TBD — see `LICENSE.md` when available.

## Acknowledgments

- Template structure adapted from common open‑source README patterns.
- Helpful README inspiration:
  - https://github.com/matiassingers/awesome-readme
  - https://gist.github.com/PurpleBooth/109311bb0361f32d87a2
  - https://github.com/dbader/readme-template
  - https://gist.github.com/zenorocha/4526327
  - https://gist.github.com/fvcproductions/1bfc2d4aecb01a834b46
