-
Notifications
You must be signed in to change notification settings - Fork 0
FR 03 Build Compilation
Cette machine n'a pas de gcc/MinGW utilisable (le /mingw64/bin présent dans le
PATH de Git Bash appartient au runtime embarqué de GitHub Desktop, pas à un vrai
toolchain). Le compilateur disponible est MSVC, via Visual Studio Community 18 :
C:\Program Files\Microsoft Visual Studio\18\Community
Utile pour un test ponctuel hors solution VS (ex. compiler un .c isolé) :
cmd /c "call `"C:\Program Files\Microsoft Visual Studio\18\Community\VC\Auxiliary\Build\vcvars64.bat`" && cd /d `"<dossier>`" && cl fichier1.c fichier2.c /Fe:sortie.exe /nologo user32.lib"-
vcvars64.batinitialise l'environnement (INCLUDE/LIB/PATH) pourcl.exe. - ℹ️ Un message
vswhere.exe n'est pas reconnupendantvcvarsall.batest du bruit inoffensif - l'environnement s'initialise correctement quand même. -
cl.exegénère des.objintermédiaires à côté des sources : à supprimer une fois le.exeobtenu si on ne les veut pas dans le dossier. - Si le code utilise l'API Registre Windows (
RegOpenKeyExA,RegCreateKeyExA, etc.), ajouteradvapi32.liben plus deuser32.lib:
cl CopilotKey.c /Fe:CopilotKey+.exe /nologo user32.lib advapi32.libLe projet a maintenant CopilotKey+.sln / Sources\CopilotKey.vcxproj : préférer
MSBuild directement plutôt que cl.exe brut, car il applique automatiquement le
niveau de warnings, les defines (LOG en Debug) et les dossiers de sortie du projet :
& "C:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Current\Bin\MSBuild.exe" "d:\GitHub\Copilot Key+\CopilotKey+.sln" /p:Configuration=Debug /p:Platform=x64 /m
& "C:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Current\Bin\MSBuild.exe" "d:\GitHub\Copilot Key+\CopilotKey+.sln" /p:Configuration=Release /p:Platform=x64 /m- 🐞 Debug :
LOGdéfini → console + sortieDEBUG_LOG. Sortie :bin\Debug\Copilot_Key+.exe. - 🚀 Release : pas de console/log. Sortie à la racine de la solution :
Copilot_Key+.exe- c'est ce binaire qui est installé/lancé en résident via-config. - 🔁 Après un rebuild Release, il faut
-quitpuis relancer l'instance résidente pour que le correctif prenne effet (Windows garde l'ancien code chargé en mémoire sinon).
CopilotKey.c est du C Win32 pur (pas de spécificité MSVC dans le code), mais il
utilise les fonctions "sécurisées" du CRT (strncpy_s, strtok_s, sprintf_s,
strcat_s, freopen_s) : il faut donc un MinGW-w64 basé sur UCRT (ex.
environnement UCRT64 de MSYS2, ou build WinLibs UCRT) - un toolchain
MinGW-w64/MSVCRT classique (TDM-GCC, environnement MINGW64 de MSYS2) échouera à
l'édition de liens (symboles _s introuvables).
# 1) Compiler la ressource (icône, version info, LANGUAGE)
windres Resources\CopilotKey.rc -O coff -o CopilotKey_res.o
# 2) Compiler + lier (ANSI/MultiByte comme le .vcxproj - ne pas définir UNICODE)
gcc Sources\CopilotKey.c CopilotKey_res.o -o "Copilot_Key+.exe" -O2 -DNDEBUG -mwindows -luser32 -ladvapi32 -lhid-
-mwindows: équivalent duSubSystem=Windowsdu projet MSVC (pas de console attachée par défaut - le programme en alloue une lui-même dans-config). - Libs à lier :
user32,advapi32(registre),hid(HidD_/HidP_ pour le chemin HID Consumer) - mêmes dépendances queAdditionalDependenciesdansSources\CopilotKey.vcxproj. - Pas d'équivalent testé au binaire
bin\Debug\...avecLOGdéfini : ajouter-DLOGet retirer-mwindows(ou garder une console via-mconsole) pour un build "debug" avec logs, par analogie avec la config Debug MSVC.
Script autonome à la racine du dépôt (à double-cliquer ou lancer depuis un
terminal), séparé du build du .exe lui-même :
make-install.bat
- Nécessite NSIS installé (
makensis.exe) ; le script cherche%ProgramFiles(x86)%\NSIS\Bin, puis retombe sur%ProgramFiles%\NSIS\Bin. - Compile le script
Resources\Install.nsiavecmakensis /V3 /PAUSE(/PAUSElaisse la fenêtre ouverte à la fin pour lire le résultat). - Suppose que
Copilot_Key+.exe(build Release) existe déjà à la racine du dépôt - il faut donc avoir fait l'Option B ci-dessus avant. - Sortie :
dist\Copilot Key+ - Install.exe. - Utilisé tel quel par la CI (
.github/workflows/build-and-sign.yml, étape "Build installer") après le build Release et l'installation de NSIS viawinget.