CMake ne trouve pas Visual C++ compiler
après avoir installé Visual Studio 2015 et avoir lancé CMake sur un projet précédent, CMake a fait des erreurs en indiquant qu'il ne trouvait pas le compilateur C.
The C compiler identification is unknown
The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:4 (PROJECT):
No CMAKE_C_COMPILER could be found.
CMake Error at CMakeLists.txt:4 (PROJECT):
No CMAKE_CXX_COMPILER could be found.
je suis allé chercher cl.exe
dans le dossier de Visual Studio, C:Program FilesMicrosoft Visual Studio 14.0
, et je n'ai pas pu le trouver.
comment configurer CMake pour travailler sur Windows avec Visual Studio 2015?
21 réponses
j'ai trouvé la solution. Bien que L'IDE de Visual Studio se soit installé avec succès, il n'a pas installé d'outils de construction et n'a donc pas installé le compilateur C++.
en essayant de créer manuellement un projet C++ dans L'interface graphique de Visual Studio 2015 j'ai pu l'inciter à télécharger les paquets C++. CMake a alors pu trouver le compilateur sans aucune difficulté.
Voici la solution qui a fonctionné pour moi:
- Ouvrir l'invite de commande Visual Studio (outil en tant qu'administrateur)
- Accédez à l'emplacement où vous avez le CMake exécutable
- Run Cmake.exe
- procéder comme d'habitude pour sélectionner la compilation et le dossier source
- sélectionnez le compilateur Visual Studio approprié et appuyez sur le bouton Configurer
espérons qu'il devrait fonctionner sans problèmes.
j'ai regardé dans CMakeError.fichier journal et trouvé une erreur à propos de cannot run 'rc.exe'
j'ai cherché et trouvé cette réponse pour copier RC.Exe et RcDll.Dll à partir de La binaire Microsoft SDKs à la binaire VC, puis CMake a fonctionné.
Edit: la première réponse à une autre question suggère que c'est un problème de chemin, de sorte qu'il pourrait être suffisant pour s'assurer que la bin SDK de Microsoft est dans votre CHEMIN.
assurez-vous que vous utilisez la version correcte de Visual Studio dans le générateur. J'avais mal sélectionné Visual Studio 15 lors de L'installation de Visual Studio 14.
ceux qui trébuchent avec cela sur Visual Studio 2017: il y a une fonctionnalité liée à CMake qui doit être sélectionnée et installée avec les outils de compilation pertinents. Voir la capture d'écran ci-dessous.
pour moi, j'ai vérifié le fichier CMakeError.log
et j'ai trouvé:
[...] erreur MSB8036: la version SDK de Windows 8.1 n'a pas été trouvé. Installez la version requise de Windows SDK ou changez la version SDK dans les pages de propriétés du projet ou en cliquant avec le bouton droit de la souris sur la solution et en sélectionnant "Retarget solution".
c'est malgré L'utilisation de Visual Studio 2017 sur Windows 7. Donc il semble que CMake essaye de construire sa détection projet avec le SDK Windows 8.1.
j'ai utilisé L'installateur Visual Studio pour ajouter ce composant et maintenant CMake est heureux comme une palourde.
si aucune des solutions ci-dessus n'a fonctionné, arrêtez-vous et faites un contrôle de santé.
j'ai été brûlé en utilisant la mauvaise chaîne -G <config>
et il m'a donné cette erreur trompeuse.
tout d'abord, exécuter à partir de L'invite de commande VS et non l'invite de commande régulière. Vous pouvez le trouver dans
Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015
cela permet de configurer tous les chemins corrects vers les outils VS, etc.
voir maintenant ce que les générateurs sont disponibles à partir de cmake...
cmake -help
...<snip>...
The following generators are available on this platform:
Visual Studio 15 [arch] = Generates Visual Studio 15 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files.
Optional [arch] can be "Win64" or "IA64".
...
a ensuite choisi la chaîne appropriée avec ajouté.
mkdir _build
cd _build
cmake .. -G "Visual Studio 15 Win64"
exécuter cmake dans un sous-répertoire rend plus facile de faire un "nettoyage" puisque vous pouvez tout supprimer dans ce répertoire.
je suis passé à Visual Studio 15 mais je ne faisais pas attention et j'essayais de générer pour 2012.
Menu → Visual Studio 2015 → MSBuild Command Prompt for Visual Studio 2015. Alors CMake peut trouver cl.exe
.
set PATH="c:\Program Files (x86)\Windows Kits\bin.0.16299.0\x64\";%PATH%
changez le chemin supérieur vers L'endroit où votre SDK Windows est installé.
CMake peut trouver rc.exe
.
cd sur le chemin de la CMakeLists.txt
et à faire:
md .build
cd .build
cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release
cmake --build .
le param après -G
doit être récupéré par CMake. Utilisez --help
; vous pouvez ou non avoir le générateur.
comme alternative à la réponse acceptée, vous pouvez installer C++ directement comme décrit ici .
j'ai rencontré le même problème et je l'ai corrigé en relançant L'installation de Visual Studio et en cochant l'option suivante:
Windows and Web Development
/ Universal Windows App Development Tools
/ Windows 10 SDK
il contient les en-têtes C++ standard utilisés dans la plupart des applications et il est donc souvent nécessaire de l'installer aussi.
dans mon cas, il y avait un ensemble de variables d'environnement qui était la raison de cette erreur. Le problème a été résolu après suppression de cxx_flags des variables d'environnement.
si vous êtes sur Visual Studio 2017 vous avez besoin D'au moins CMake 3.8!
J'ai eu ce problème avec CMake 3.12.1, après une mise à jour de Visual Studio 2017. J'ai simplement relancé CMake et ça a marché.
dans mon cas, je pouvais voir dans le CMakeError.log
que CMake ne pouvait pas trouver le SDK Windows ( MSB8003: Could not find WindowsSDKDir variable from the registry
).
la version peut être spécifiée sur la ligne de commande lors de la première exécution de CMake en utilisant:
-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=
je suis allé plus loin après avoir réglé cela, mais j'ai frappé plus de problèmes plus tard (donc je suppose que mon environnement est en quelque sorte perturbé), mais peut-être qu'il aidera quelqu'un avec cette question.
quelques conseils:
- essayez de définir le chemin manuellement en cochant "avancé" et en modifiant CMAKE_LINKER et CMAKE_MAKE_PROGRAM
- Effacer le cache dans le CMake avec GUI aller à: Fichier → Supprimer Le Cache.
mon problème était une combinaison de précédemment déclaré: j'ai mis la version du compilateur à 15 au lieu de 14 et une fois corrigé, j'ai dû supprimer le cache.
j'ai aussi j'ai lancé L'invite de commande Visual Studio en tant qu'administrateur et de là j'ai lancé la commande cmake-gui.exe
alors tout fonctionnait comme prévu.
dans mon cas, le problème était que le projet parent, qui comprend googletest via
add_subdirectory(gtest_dir)
a été défini comme
PROJECT( projname CXX )
D'une façon ou D'une autre, CMake ne reconnaît pas
PROJECT(sub_project_name CXX C)
puisque le compilateur C n'est pas défini dans le parent.
j'ai résolu le problème en utilisant
PROJECT( projname CXX C)
dans mon fichier principal CMakeLists.txt
.
cela pourrait être une autre solution pour ceux qui ont la dernière version de Windows 10 creator:
Stack Overflow post Fatal error LNK1104: cannot open file 'gdi32.lib '
aucune des solutions précédentes n'a fonctionné pour moi. Cependant j'ai remarqué que bien que J'ai installé Visual Studio version 15 (à ne pas confondre avec Visual Studio 2015) le répertoire créé sur mon ordinateur était pour Visual Studio 14.
quand J'ai spécifié Visual Studio 14 quand j'ai appuyé sur le bouton de configuration ça a marché.
J'ai eu ce problème sous Windows 10 lorsque J'ai utilisé Visual Studio 2015 Professional, pendant que Visual Studio 2015 Express fonctionnait! Sous Windows 7, Les deux versions de Visual Studio fonctionnaient.
Nouveaux projets créés à partir de L'IDE professionnel de Visual Studio 2015 compilent avec succès, mais CMake ne trouverait pas le compilateur rapportant:
The C compiler identification is unknown
The CXX compiler identification is unknown
J'ai amélioré CMake de 3.4.1 à 3.11.4, et maintenant le problème est parti.
j'ai eu un problème similaire avec le projet Visual Studio 2017 généré par CMake. Certains paquets manquaient lors de l'installation de Visual Studio dans Desktop development avec C++. Voir capture d'écran:
Visual Studio 2017 Packages:
aussi, mettez à jour CMake à la dernière version.
parce que CMake n'est pas capable de trouver votre compilateur Visual Studio. Démarrer tout projet qui va télécharger les compilateurs nécessaires et CMake doit être en mesure de le trouver alors.