Installer MSVC v143 14.38 sur Visual Studio 2022 pour Unreal Engine 5 : guide complet et correctifs “Toolset v143 not found”

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”.

Sommaire

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

ÉtapeDétail
1. Ouvrir Visual Studio InstallerCliquer sur Modifier pour l’instance concernée.
2. Composants individuelsDans 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. InstallerValider. Le répertoire …\VC\Tools\MSVC\14.38.33130\ est rajouté sans supprimer les versions plus récentes.
4. Forcer cette version à la compilationUnreal 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.).

VersionUE (exemples)Contrainte typiqueRemarques
MSVC 14.38 (v143)UE 5.3 / UE 5.4Exigée pour générer l’Engine et de nombreux plugins tiersDisponible via VS 2022 17.8 (et via composants pour 17.11+)
MSVC 14.4x (v143)Projets récents non-UEPar défaut après mises à jour VS 2022Peut 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)

  1. Lancez Visual Studio Installer depuis le menu Démarrer.
  2. Cliquez sur Modifier de l’instance visée (Community/Professional/Enterprise).
  3. Onglet Composants individuels → tapez 14.38 dans la recherche.
  4. 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)
    Vous pouvez cocher les libs Spectre ou la variante standard selon vos besoins. Unreal n’exige pas spécifiquement l’une ou l’autre, mais vos dépendances peuvent le faire.
  5. Cliquez Modifier / Installer. À l’issue, vérifiez la présence de 14.38.33130 dans VC\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.38 ou cmake -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”

  1. 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.
  2. Confirmez que votre build sélectionne 14.38 (CMake -T, Directory.Build.props, vcvarsall -vcvars_ver=14.38).
  3. 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

CommandeUsageAttendu (14.38)
cl.exe /BvVersion détaillée du compilateur19.38.33130” et chemin 14.38.33130
cmake --versionVérifier version de CMake≥ 3.28 pour -T v143,version=…
msbuild /versionValider MSBuildMSBuild 17.x (VS 2022)
where clRésolution dans le PATHChemin 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, Intermediate et le dossier build quand 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.props avec VCToolsVersion=14.38.33130.
  • [ ] UE : GenerateProjectFiles.bat -2022 relancé.
  • [ ] CMake : -T v143,version=14.38.33130 utilisé.
  • [ ] Session : vcvarsall amd64 -vcvars_ver=14.38 exécuté.
  • [ ] Diagnostic : cl /Bv affiche 19.38.33130.
  • [ ] Nettoyage : caches build/Intermediate purgés.
Sommaire