# Rust-Toolchain mit MSVC unter Windows einrichten

Dieser Artikel beschreibt die vollständige Einrichtung einer produktionsfähigen Rust-Toolchain mit **MSVC (Microsoft Visual C++)** unter **Windows**, einschließlich Erstellung einer `.exe`-Datei aus einem Beispielprogramm.

## Inhalt

- [Rust-Toolchain mit MSVC unter Windows einrichten](#rust-toolchain-mit-msvc-unter-windows-einrichten)
  - [Inhalt](#inhalt)
  - [Voraussetzungen](#voraussetzungen)
  - [1. Rust installieren](#1-rust-installieren)
  - [2. Visual Studio Build Tools installieren](#2-visual-studio-build-tools-installieren)
    - [Schritt-für-Schritt](#schritt-für-schritt)
  - [3. Umgebungsvariablen setzen (optional)](#3-umgebungsvariablen-setzen-optional)
  - [4. Beispielprojekt erstellen](#4-beispielprojekt-erstellen)
  - [5. Projekt kompilieren](#5-projekt-kompilieren)
    - [Debug-Build (schnell, nicht optimiert)](#debug-build-schnell-nicht-optimiert)
    - [Release-Build (optimiert, kleine `.exe`)](#release-build-optimiert-kleine-exe)
  - [6. Optional: `.exe` testen](#6-optional-exe-testen)
  - [7. Troubleshooting](#7-troubleshooting)
  - [8. Alternative: Toolchain in einem Offline-Installer vorbereiten](#8-alternative-toolchain-in-einem-offline-installer-vorbereiten)
  - [Zusammenfassung](#zusammenfassung)
  - [Weiterführende Themen](#weiterführende-themen)

---

## Voraussetzungen

- Windows 10 oder 11 (64 Bit)  
- Administratorrechte  
- Mindestens 2 GB freier Speicherplatz  

## 1. Rust installieren

Lade das offizielle Rust-Installationsprogramm herunter und führe es aus:  

    <https://rustup.rs>

Beim Setup:

- **Toolchain wählen**: `default host triple: x86_64-pc-windows-msvc`  
- Folge dem Assistenten, um `rustc`, `cargo` und `rustup` zu installieren.  

Verifiziere die Installation:  

```shell
rustc --version
cargo --version
```

## 2. Visual Studio Build Tools installieren

Die Rust-Toolchain mit MSVC benötigt den **"C++ Build Tools"**-Teil von Visual Studio.  

### Schritt-für-Schritt

1. Lade den **Visual Studio Installer**:  
   - <https://visualstudio.microsoft.com/de/visual-cpp-build-tools/>  

2. Wähle bei der Installation:  
   - ✅ **C++ Build Tools**  
   - Und in der rechten Spalte:  
     - ✅ "MSVC v14.x - VS 2022 C++ x64/x86-Buildtools"  
     - ✅ "Windows 10 SDK" oder "Windows 11 SDK" (je nach Zielsystem)  
     - ✅ "C++ CMake-Tools für Windows" (optional für CMake-Projekte)  

3. Installiere alles und starte das System neu, falls verlangt.  

## 3. Umgebungsvariablen setzen (optional)

Falls du die Buildtools über Kommandozeile verwenden willst, öffne:  

```cmd
"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
```

Das setzt temporär alle notwendigen Umgebungsvariablen für den Build-Prozess.

## 4. Beispielprojekt erstellen

```cmd
cargo new hello_world
cd hello_world
```

Beispielcode in `src/main.rs`:

```rust
fn main() {
    println!("Hallo Welt – kompiliert mit MSVC!");
}
```

## 5. Projekt kompilieren

### Debug-Build (schnell, nicht optimiert)

```cmd
cargo build
```

### Release-Build (optimiert, kleine `.exe`)

```cmd
cargo build --release
```

Die fertige `.exe` liegt unter:

    .\target\release\hello_world.exe

## 6. Optional: `.exe` testen

```cmd
.\target\release\hello_world.exe
```

## 7. Troubleshooting

- **Fehlermeldung `link.exe not found`?**  
  → Build-Tools sind nicht korrekt installiert (siehe Schritt 2)  

- **Fehlermeldung zu fehlendem SDK?**  
  → Stelle sicher, dass du das passende Windows SDK mit installiert hast  

- **MSVC und GNU Toolchain gleichzeitig installiert?**  
  → Du kannst über `rustup` zwischen beiden wechseln:  

```cmd
rustup show
rustup default stable-x86_64-pc-windows-msvc
```

## 8. Alternative: Toolchain in einem Offline-Installer vorbereiten

Wenn du das Setup auf mehreren Rechnern ohne Internetzugang durchführen möchtest, siehe [separater Artikel zur Erstellung eines Installationsmediums](./rust-offline-installation.md).

## Zusammenfassung

| Komponente       | Aufgabe                         |
|------------------|----------------------------------|
| Rustup           | Verwaltung von Toolchains        |
| Cargo            | Buildsystem und Paketmanager     |
| MSVC Build Tools | C++-Compiler/Linker für Windows  |
| `vcvars64.bat`   | Aktiviert Build-Umgebung         |
| `cargo build`    | Erstellt `.exe` mit Rust und MSVC |

## Weiterführende Themen

- Einbindung von Ressourcen und Icons in die `.exe`
- Verwendung von `cc`/`bindgen` für C-Bindings
- Cross-Kompilierung mit `x86_64-pc-windows-gnu` oder Linux-Zielsystemen
- Automatisierter Build via Makefile oder PowerShell
