J'essaie de compiler un projet à l'aide d'OpenFrameworks (une bibliothèque utilisant C++) dans Visual Studio. La construction est définie sur Release et X64 et, dans les propriétés du projet, j'ai défini le jeu d'outils de la plateforme sur Visual Studio 2015 (v140).
Cependant, chaque fois que j'essaie de construire le projet, je reçois la même erreur (entre autres)
Erreur MSB8020 Les outils de génération pour v141 (Platform Toolset = 'v141') sont introuvables. Pour construire à l'aide des outils de compilation v141, installez les outils de construction v141.
Je sais que v141 est issu de la nouvelle version de MSVS 2017 mais je ne souhaite pas effectuer de mise à niveau car la nouvelle version n'est pas compatible avec OpenFrameworks. J'ai essayé de reconstruire le projet à partir de zéro à plusieurs reprises et j'ai également examiné le fichier VCXPROJ et vérifié que tout est défini sur V140 - et c'est le cas. Tous très bizarre.
Il semble que lors de la construction, quelque chose impose une version de v141 mais je n'arrive pas à trouver d'où cela vient. est-ce que quelqu'un a une idée?
J'ai eu un tel problème. La solution est: ouvrez le menu "Projet" -> Propriétés -> Propriétés de configuration -> Général - et choisissez le jeu d’outils de la plate-forme v140.
Vous avez eu la même erreur en essayant de npm install
après le clonage d'un projet basé sur un nœud. Il avait une dépendance npm qui nécessitait la compilation de la source C++.
J'avais déjà modifié mon installation de VS2017
pour inclure Individual Components
-> VC++ 2017 version 15.7 v14.14 latest v141 tools
mais cela n'a pas aidé.
J'ai appliqué ces commandes successivement
npm install -g node-gyp
npm install --global --production windows-build-tools
Le premier n'a eu aucun effet, mais le second a fait l'affaire et la commande npm install
s'est terminée avec succès.
Pour cette erreur, et similaire, pour d'autres plates-formes (par exemple, VS2013), ce problème se produit généralement car vous avez installé une version plus ancienne de VS après avoir installé une version ultérieure. Je remarque que cela affectera tous vos projets Visual Studio C++ et que vous devrez les configurer manuellement pour cibler l'ensemble d'outils spécifique à la version de VS que vous essayez de créer dans le projet.
Cela a été abordé dans les commentaires d’une des réponses, mais cela a fonctionné pour moi. J'avais les outils de génération v140 et v141 installés. Ainsi, lorsque je devais utiliser des outils de génération v140, j'ai défini la variable VCTargetsPath
sur le chemin des outils de génération v140. La suppression de cette variable dans mon environnement a finalement résolu ce problème pour moi.