Skip to content

FR 04 Pieges Environnement

Captain FLAM edited this page Aug 27, 2026 · 1 revision

🧯 Pièges liés à l'environnement (machine / toolchain)

Ces pièges sont génériques 🔁 : ils concernent la machine Windows et la toolchain MSVC, pas le code de Copilot Key+. Directement réutilisables dans un autre workspace compilé sur cette même machine.

❌ Pas de gcc/MinGW disponible

Ne pas supposer que gcc est disponible, même si des README/Makefiles trouvés dans le dépôt utilisent des commandes gcc. Sur cette machine :

  • gcc est absent du PATH, en Git Bash comme en PowerShell.
  • Le /mingw64/bin visible dans le PATH de Git Bash appartient au runtime embarqué de GitHub Desktop, pas à un vrai toolchain MinGW - ne pas s'y fier.
  • Solution : utiliser MSVC (cl.exe / MSBuild) via Visual Studio Community 18, voir 🛠️ 03-Build-Compilation.md.

🔇 vswhere.exe n'est pas reconnu pendant vcvarsall.bat

Message d'erreur qui s'affiche à l'appel de vcvars64.bat mais qui est inoffensif : l'environnement de compilation (INCLUDE, LIB, PATH) s'initialise correctement malgré ce message. Ne pas le traiter comme un échec réel - vérifier plutôt que cl.exe fonctionne ensuite.

📍 Chemin Visual Studio à connaître

C:\Program Files\Microsoft Visual Studio\18\Community
  • VC\Auxiliary\Build\vcvars64.bat → initialisation de l'environnement cl.exe
  • MSBuild\Current\Bin\MSBuild.exe → build via .sln/.vcxproj

🧰 Outils tiers installés/utilisés en cours de route

  • NSIS 📦 est le moteur d'installateur. Installé en CI via winget :

    winget install --id NSIS.NSIS -e --source winget --accept-package-agreements --accept-source-agreements --disable-interactivity

    Binaire résultant : C:\Program Files (x86)\NSIS\makensis.exe.

  • 💡 Préférence de Captain FLAM : winget plutôt que choco pour installer des outils en CI/local sur cette machine, sauf si un paquet n'existe que sur l'un des deux.

🐚 Bash tool vs PowerShell sur cette machine

Si le Bash tool disponible dans cette session est Git Bash (POSIX-like), pas WSL : des commandes standard comme find, wc, grep peuvent renvoyer "command not found" selon le PATH effectif de la session - préférer les outils dédiés (Glob, Grep, Read) plutôt que les invoquer en Bash brut sur cette machine.