Votre projet Unreal Engine exige MSVC v143 14.38 mais Visual Studio 2022 a basculé sur un toolset plus récent ? Voici un guide complet, concret et reproductible pour ajouter 14.38, le sélectionner à la compilation (UE, CMake, MSBuild, batch) et résoudre les erreurs “Toolset v143 with version 14.38 not found”.
Installer l’outil MSVC v143 14.38 dans Visual Studio 2022
Problème
Après une mise à jour de Visual Studio 2022 (par exemple vers 17.11+), la chaîne d’outils passe à MSVC 14.41.34120. Certains projets — en particulier des projets Unreal Engine 5.x compilés avec une version spécifique du compilateur — échouent avec le message :
error: Toolset v143 with version 14.38 not found
La bonne nouvelle : Visual Studio permet d’installer plusieurs toolsets côte à côte. Il suffit d’ajouter MSVC 14.38 (v143) et de forcer son utilisation pour le projet concerné, sans désinstaller les versions plus récentes.
Solutions éprouvées
| Étape | Détail |
|---|---|
| 1. Ouvrir Visual Studio Installer | Cliquer sur Modifier pour l’instance concernée. |
| 2. Composants individuels | Dans la zone de recherche, taper 14.38 et cocher : MSVC v143 – VS 2022 C++ Spectre‑mitigated libs (v14.38‑17.8) (ou libellé équivalent). |
| 3. Installer | Valider. Le répertoire …\VC\Tools\MSVC\14.38.33130\ est rajouté sans supprimer les versions plus récentes. |
| 4. Forcer cette version à la compilation | Unreal Engine 5.x : relancer GenerateProjectFiles.bat -2022 – le moteur choisit automatiquement 14.38 s’il est présent. CMake ≥ 3.28 : -T v143,version=14.38.33130. Batch : vcvarsall.bat amd64 -vcvars_ver=14.38. |
Astuce : Conserver plusieurs toolsets (14.38, 14.41…) évite de casser d’autres projets ; indiquez explicitement celui à utiliser.
Alternatives
- Visual Studio Build Tools – Si vous n’avez pas besoin de l’IDE, installez seulement les Build Tools et choisissez le composant MSVC 14.38.
- Rétrograder l’IDE – Désinstaller VS 2022 17.11+ et réinstaller VS 2022 17.8 (dernier à livrer 14.38), puis désactiver les mises à jour automatiques.
Points d’attention
- Compatibilité Unreal Engine : au 20 octobre 2025, UE 5.3 et 5.4 exigent toujours 14.38 ; vérifiez les notes de version avant toute mise à jour de Visual Studio.
- Espace disque : chaque toolset occupe ~2 Go. Vous pouvez supprimer les répertoires non utilisés après migration.
- Spectre‑mitigated vs standard : Unreal se contente du package Spectre ou standard ; choisissez celui assorti au reste de vos dépendances.
Pourquoi 14.38 ? Comprendre l’alignement UE ↔ MSVC
Unreal Engine fige périodiquement la version du compilateur MSVC pour garantir la reproductibilité des builds, la stabilité ABI et la compatibilité binaire avec les binaires précompilés (plugins, SDKs). Tant que l’Engine (ou les dépendances critiques) ne sont pas recompilés avec le nouveau compilateur, changer de version peut introduire des incohérences (warnings promus en erreurs, différences d’optimisation, changement d’inline, ABI, PDB, etc.).
| Version | UE (exemples) | Contrainte typique | Remarques |
|---|---|---|---|
| MSVC 14.38 (v143) | UE 5.3 / UE 5.4 | Exigée pour générer l’Engine et de nombreux plugins tiers | Disponible via VS 2022 17.8 (et via composants pour 17.11+) |
| MSVC 14.4x (v143) | Projets récents non-UE | Par défaut après mises à jour VS 2022 | Peut casser la compilation UE si non épinglée |
Conclusion : tant que votre pile UE (Engine + plugins) cible 14.38, installez 14.38 et forcez son usage pour les projets concernés.
Vérifier votre environnement : quelles versions MSVC sont installées ?
Par l’exécutable du compilateur
cl.exe /Bv
La sortie indique l’hôte (HostX64 / Hostx86 / HostARM64) et la version exacte du compilateur (par ex. 19.38.33130) correspondant au répertoire 14.38.33130.
Par l’explorateur
Par défaut (édition Community), le chemin est similaire à :
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\
├─ 14.38.33130\
├─ 14.41.34120\
└─ ...
Par la ligne de commande des outils VS
Ouvrez « x64 Native Tools Command Prompt for VS 2022 » puis :
where cl
where vcvarsall.bat
Par CMake (détection automatisée)
cmake -G "Visual Studio 17 2022" -A x64 -S . -B build
Sans forcer de version, CMake choisira en général la plus récente disponible. Il faudra donc lui passer l’option décrite ci‑dessous pour 14.38.
Procédure standard via Visual Studio Installer (GUI)
- Lancez Visual Studio Installer depuis le menu Démarrer.
- Cliquez sur Modifier de l’instance visée (Community/Professional/Enterprise).
- Onglet Composants individuels → tapez 14.38 dans la recherche.
- Cochez au minimum l’un de ces éléments (libellé variable selon édition) :
- MSVC v143 – VS 2022 C++ x64/x86 build tools (v14.38‑17.8)
- MSVC v143 – VS 2022 C++ Spectre‑mitigated libs (v14.38‑17.8)
- Cliquez Modifier / Installer. À l’issue, vérifiez la présence de
14.38.33130dansVC\Tools\MSVC\.
Bon à savoir : l’installation de 14.38 n’enlève pas 14.41 (ni d’autres). Vous pouvez conserver plusieurs répertoires côte à côte et choisir la version au moment de la build.
Forcer MSVC 14.38 dans vos workflows
Unreal Engine 5.x
Après avoir installé 14.38, relancez la génération des projets :
Engine\Build\BatchFiles\GenerateProjectFiles.bat -2022
Lorsqu’elle est disponible, UE préfère la version requise (14.38) pour générer les solutions Visual Studio correspondantes. Si vous construisez via UnrealBuildTool ou RunUAT, assurez‑vous d’utiliser un Developer Command Prompt initialisé sur 14.38 (voir vcvarsall ci‑dessous).
CMake (≥ 3.28)
Passez la toolchain explicite en -T :
cmake -G "Visual Studio 17 2022" -A x64 ^
-T v143,version=14.38.33130 ^
-S . -B build-v143-1438
Astuce : conservez des dossiers de build dédiés à chaque toolset (build-v143-1438, build-v143-1441, etc.) pour éviter les mélanges d’artefacts.
MSBuild / .vcxproj (projets C++ classiques)
Ajoutez la propriété VCToolsVersion au niveau solution (fichier Directory.Build.props à la racine) afin d’épingler 14.38 pour tout le repo :
<Project>
<PropertyGroup>
<PlatformToolset>v143</PlatformToolset>
<VCToolsVersion>14.38.33130</VCToolsVersion>
</PropertyGroup>
</Project>
Cette méthode surpasse la détection automatique et fonctionne même si l’IDE propose par défaut une version plus récente. Elle est idéale pour les équipes et l’intégration continue.
Invite développeur / scripts batch
Initialisez l’environnement Visual C++ sur 14.38 via vcvarsall.bat :
"%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.38
Vous pouvez créer un fichier SetVC143_1438.cmd qui exécute cette ligne, puis lance msbuild / cmake / RunUAT.
Variable d’environnement de secours
Pour certains scénarios outillés (CI, anciens générateurs), définir VCToolsVersion dans l’environnement permet d’orienter la recherche :
set VCToolsVersion=14.38.33130
Cette variable ne remplace pas l’installation du composant 14.38 ; elle la sélectionne quand elle est présente.
Cas CI/CD : runners Windows, Build Tools et pipelines
Si votre build s’exécute sur un agent Windows (GitHub Actions, Azure Pipelines, Jenkins, etc.) :
- Préinstallez les Build Tools avec le composant 14.38. Une image windows‑2022 récente contient souvent 14.4x ; l’ajout de 14.38 est nécessaire pour UE 5.3/5.4.
- Épinglez la version via
VCToolsVersion,vcvarsall -vcvars_ver=14.38oucmake -T v143,version=14.38.33130. - Cachez séparément vos répertoires de build par toolset pour éviter les collisions d’artefacts.
Dépannage ciblé
Erreur : “Toolset v143 with version 14.38 not found”
- Vérifiez la présence de
…\VC\Tools\MSVC\14.38.33130\. S’il n’existe pas, réinstallez le composant MSVC v143 (14.38‑17.8) via l’Installer. - Confirmez que votre build sélectionne 14.38 (CMake
-T,Directory.Build.props,vcvarsall -vcvars_ver=14.38). - Nettoyez le cache : supprimez le dossier
build/Intermediate/Binaries(selon outil) et regénérez.
“cl.exe is not recognized…”
Votre session n’est pas initialisée par vcvarsall. Ouvrez l’Invite des outils développeur VS 2022, ou exécutez explicitement :
"%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.38
Conflits Spectre vs non‑Spectre
Si vous avez installé uniquement les bibliothèques “Spectre‑mitigated” mais que vos dépendances attendent les libs standard (ou inversement), cochez l’autre composant 14.38 correspondant et réparez l’installation. Unreal accepte l’une ou l’autre, mais vos SDK tiers peuvent imposer un type.
Projets mélangeant des toolsets
Évitez d’ouvrir la même solution avec des sous‑projets bâtis avec 14.41 puis 14.38 sans nettoyage. Idéalement, séparez les dossiers de build et mettez en place un Directory.Build.props à la racine qui définit VCToolsVersion = 14.38 pour tout le dépôt.
Échec de link sur des binaires précompilés
Des libs et dll précompilées UE/tiers peuvent avoir été produites avec 14.41. Re-générez‑les avec 14.38 ou obtenez les artefacts compatibles. Sur UE, supprimez Intermediate et Binaries des modules concernés.
Commandes rapides et diagnostics utiles
| Commande | Usage | Attendu (14.38) |
|---|---|---|
cl.exe /Bv | Version détaillée du compilateur | “19.38.33130” et chemin 14.38.33130 |
cmake --version | Vérifier version de CMake | ≥ 3.28 pour -T v143,version=… |
msbuild /version | Valider MSBuild | MSBuild 17.x (VS 2022) |
where cl | Résolution dans le PATH | Chemin sous ...MSVC\14.38.33130\bin\Hostx64\x64\ |
Exemples prêts à copier
Script batch (x64, MSVC 14.38)
@echo off
setlocal
call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.38
echo MSVC initialisé sur 14.38
cl /Bv
endlocal
Configuration CMake out-of-source
rmdir /S /Q build-v143-1438 2>nul
cmake -G "Visual Studio 17 2022" -A x64 ^
-T v143,version=14.38.33130 ^
-S . -B build-v143-1438
cmake --build build-v143-1438 --config Development
Épinglage global par Directory.Build.props
<Project>
<PropertyGroup>
<PlatformToolset>v143</PlatformToolset>
<VCToolsVersion>14.38.33130</VCToolsVersion>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
</Project>
Solution multi‑toolsets (ex. projets A en 14.38, B en 14.41)
Placez des Directory.Build.props dans des sous‑dossiers :
repo/
Directory.Build.props --> VCToolsVersion=14.41.34120 (par défaut)
EngineBased/
Directory.Build.props --> VCToolsVersion=14.38.33130 (UE)
MSBuild applique la propriété la plus proche du projet, vous permettant de coexister proprement.
Gestion de l’espace disque et nettoyage
- Taille : comptez ~2 Go par répertoire
MSVC\14.xx.xxxxx(plus si vous installez les libs Spectre et ARM64). - Nettoyage : une fois la migration validée, vous pouvez supprimer manuellement les versions dont vous n’avez plus besoin (à vos risques) ; privilégiez toutefois l’Installer pour éviter les incohérences.
- Build determinism : en CI, purgez
Binaries,Intermediateet le dossierbuildquand vous changez de toolset pour éviter les mélanges d’objets compilés.
FAQ
Puis-je rester sur la dernière version de VS et installer 14.38 en parallèle ?
Oui. C’est précisément le scénario recommandé : installez 14.38 via l’onglet Composants individuels, et gardez 14.4x pour vos autres projets. Forcer la version au niveau projet évite les régressions.
Quelle différence entre libs Spectre et standard ?
Les libs Spectre‑mitigated sont compilées avec des atténuations Spectre (impact performance léger à modéré, selon la charge). Choisissez en cohérence avec vos dépendances : si un SDK impose Spectre, alignez‑vous ; sinon, la version standard convient.
Dois‑je rétrograder Visual Studio ?
Non, sauf contrainte d’outillage interne. L’approche “multi‑toolsets” est plus saine et pérenne. Rétrograder l’IDE peut aider temporairement mais complique les mises à jour de sécurité.
Comment vérifier que mon projet UE utilise bien 14.38 ?
Regardez les journaux de build : la ligne d’invocation du compilateur doit pointer dans ...MSVC\14.38.33130\bin\Hostx64\x64\cl.exe. Vous pouvez aussi lancer cl /Bv depuis la même session que votre build UE.
Et si CMake < 3.28 ?
Vous pouvez : (1) initialiser l’environnement avec vcvarsall -vcvars_ver=14.38 avant d’appeler CMake ; ou (2) définir VCToolsVersion=14.38.33130 dans l’environnement ; ou (3) mettre à jour CMake.
Ressources utiles
- Documentation officielle : Use multiple MSVC toolsets side‑by‑side (VS 2022)
- Guide Epic Games : Unreal Engine 5 – Building from Source
- Téléchargement Visual Studio Build Tools 2022 (page Downloads de Microsoft)
Conseil : utilisez votre moteur de recherche avec les titres ci‑dessus pour trouver les instructions détaillées et à jour.
En résumé
Pas besoin de désinstaller Visual Studio : ajoutez tout simplement le composant MSVC v143 14.38 via l’Installer, puis fixez la version dans vos scripts (CMake, batch, MSBuild/UE). Vous conservez ainsi la compatibilité avec Unreal Engine tout en profitant des nouveautés de VS 2022 et en minimisant le risque de régression.
Checklist rapide (copier‑coller pour vos PR)
- [ ] Installer : composant MSVC v143 (14.38‑17.8) ajouté.
- [ ] Épinglage :
Directory.Build.propsavecVCToolsVersion=14.38.33130. - [ ] UE :
GenerateProjectFiles.bat -2022relancé. - [ ] CMake :
-T v143,version=14.38.33130utilisé. - [ ] Session :
vcvarsall amd64 -vcvars_ver=14.38exécuté. - [ ] Diagnostic :
cl /Bvaffiche19.38.33130. - [ ] Nettoyage : caches
build/Intermediatepurgés.

