# Instructions pour les agents

Ce fichier decrit comment travailler dans ce depot, en particulier sous Windows
et Linux. Complete les sections marquees `A COMPLETER` avec les commandes et
contraintes propres a ton environnement.

## Contexte du projet

- Projet : `JIN4_Logo`
- Langage principal : C++23
- Systeme de build : CMake
- Bibliotheque graphique : SFML, recuperee via `FetchContent`
- Plateformes ciblees : Windows et Linux

## Environnement Windows

Avant toute generation ou compilation sous Windows, lancer d'abord le shell de
developpement Visual Studio depuis PowerShell :

```powershell
& 'C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\Launch-VsDevShell.ps1'
```

Une fois cette commande executee, l'environnement de reference est disponible :

- Version de Windows :
- IDE ou editeur recommande : Visual Studio 2022 Community
- Generateur CMake recommande : Ninja
- Compilateur attendu : CL 19.44.35227
- Architecture cible : x86
- CMake : 3.29.2
- Ninja : 1.12.0
- Dossier de build par defaut : `out\build\x86-Debug`

Verifier l'environnement :

```powershell
cl
cmake --version
ninja --version
```

Exemples possibles :

```powershell
cmake -S . -B out\build\x86-Debug -G Ninja -DCMAKE_BUILD_TYPE=Debug
cmake --build out\build\x86-Debug --target logo
```

## Environnement Linux

Environnement de reference :

- Distribution : Ubuntu 24.04
- Compilateur : g++ 14.3.0
- CMake : 4.3.3
- Generateur CMake : Ninja
- Ninja : 1.11.1
- Dossier de build par defaut : `out/build/linux-debug`

Verifier l'environnement :

```bash
g++ --version
cmake --version
ninja --version
```

## Commandes de generation Linux

Utiliser Ninja et g++ explicitement pour configurer le projet.

```bash
cmake -S . -B out/build/linux-debug -G Ninja -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Debug
```

## Commandes de compilation Linux

```bash
cmake --build out/build/linux-debug --target logo
```

## Commandes d'execution Linux

Indiquer ici comment lancer l'application apres compilation.

```bash
# A COMPLETER si le chemin differe
./out/build/linux-debug/src/main/logo res/prog2.logo
```

Avec export SVG, si applicable :

```bash
# A COMPLETER si le chemin differe
./out/build/linux-debug/src/main/logo res/prog2.logo 0 sortie.svg
```

## Commandes de generation

Indiquer ici la sequence exacte a utiliser pour generer/configurer le projet
sous Windows.

```powershell
& 'C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\Launch-VsDevShell.ps1'
cmake -S . -B out\build\x86-Debug -G Ninja -DCMAKE_BUILD_TYPE=Debug
```

## Commandes de compilation

Indiquer ici la commande de compilation principale.

```powershell
cmake --build out\build\x86-Debug --target logo
```

## Commandes d'execution

Indiquer ici comment lancer l'application apres compilation.

```powershell
# A COMPLETER si le chemin differe
out\build\x86-Debug\src\main\logo.exe res\prog2.logo
```

Avec export SVG, si applicable :

```powershell
# A COMPLETER si le chemin differe
out\build\x86-Debug\src\main\logo.exe res\prog2.logo 0 sortie.svg
```

## Tests et verification

A COMPLETER :

- Commande de test :
- Scenarios manuels a verifier :
- Fichiers `.logo` de reference :
- Resultats attendus :

```powershell
# A COMPLETER
ctest --test-dir out\build\x64-Debug
```

## Style de code

- Respecter le style existant du depot.
- Utiliser `.clang-format` si un formatage est necessaire.
- Garder les changements limites au besoin demande.
- Ne pas melanger refactorisation et correction fonctionnelle sans raison.

Commande de formatage eventuelle :

```powershell
# A COMPLETER
clang-format -i src\main\*.cpp src\main\*.h
```

## Structure utile

- `CMakeLists.txt` : configuration principale du projet.
- `src/main` : code source principal.
- `res` : programmes Logo et ressources d'exemple.
- `out` : sorties de build locales, a ne pas modifier manuellement sauf besoin.
- `MAINTENANCE.md` : notes techniques sur l'architecture du projet.

## Regles pour les agents

- Lire `MAINTENANCE.md` avant de modifier l'architecture ou les instructions
  Logo.
- Ne pas supprimer ou regenerer le dossier `out` sans demande explicite.
- Ne pas annuler des changements existants qui ne viennent pas de l'agent.
- Preferer les commandes PowerShell dans les exemples Windows.
- Verifier la compilation apres une modification C++ quand c'est possible.
- Signaler clairement toute commande non executee ou toute verification
  impossible.

## Points a preciser par le mainteneur

A COMPLETER :

- Les configurations Visual Studio officiellement supportees :
- Le chemin exact de l'executable genere :
- Les dependances systeme attendues :
- Les tests minimaux avant livraison :
- Les conventions de nommage propres au projet :
- Les commandes interdites ou a demander avant execution :
