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?

96
demandé sur Peter Mortensen 2015-07-24 23:31:33

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

108
répondu Asher 2018-09-15 22:22:36

Voici la solution qui a fonctionné pour moi:

  1. Ouvrir l'invite de commande Visual Studio (outil en tant qu'administrateur)
  2. Accédez à l'emplacement où vous avez le CMake exécutable
  3. Run Cmake.exe
  4. procéder comme d'habitude pour sélectionner la compilation et le dossier source
  5. sélectionnez le compilateur Visual Studio approprié et appuyez sur le bouton Configurer

espérons qu'il devrait fonctionner sans problèmes.

28
répondu Ochi Fortune 2018-09-15 22:23:46

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.

25
répondu Carl Walsh 2017-11-13 18:16:35

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.

14
répondu Hrushikesh Kulkarni 2016-11-30 00:20:39

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.

Visaul C++ tools for CMake must be installed

8
répondu Vadim Berman 2017-10-02 02:03:15

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.

6
répondu chowey 2018-09-15 22:31:58

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.

5
répondu TrophyGeek 2018-09-18 22:37:32

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.

4
répondu Alen Wesker 2018-09-15 22:51:13

comme alternative à la réponse acceptée, vous pouvez installer C++ directement comme décrit ici .

1
répondu Jthorpe 2017-05-23 11:54:56

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.

0
répondu Philippe Ferdinand 2016-10-26 11:23:49

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.

0
répondu Starger 2017-06-26 00:33:07

si vous êtes sur Visual Studio 2017 vous avez besoin D'au moins CMake 3.8!

0
répondu Lars Bilke 2017-11-01 13:57:42

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

0
répondu 0xF 2018-08-30 11:03:28

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.

0
répondu Zitrax 2018-09-15 22:28:21

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.

0
répondu Rarach 2018-09-15 22:31:08

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 .

0
répondu mojovski 2018-09-15 22:34:05

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 '

0
répondu alanwsx 2018-09-15 22:48:12

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

0
répondu Gamaliel 2018-09-15 22:56:04

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.

0
répondu jpo38 2018-09-15 22:58:09

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:

Visual Studio2017 Packages

aussi, mettez à jour CMake à la dernière version.

0
répondu vinodsaluja 2018-09-15 23:03:51

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.

-1
répondu Kushal 2018-09-15 22:29:56