web-dev-qa-db-fra.com

CMake sur Windows

J'essaie d'exécuter CMake sous Windows et j'obtiens le message d'erreur suivant:

-- The C compiler identification is unknown
CMake Error at CMakeLists.txt:3 (PROJECT):
  The CMAKE_C_COMPILER:

    cl

  is not a full path and was not found in the PATH.

  To use the NMake generator with Visual C++, cmake must be run from a Shell
  that can use the compiler cl from the command line.  This environment is
  unable to invoke the cl compiler.  To fix this problem, run cmake from the
  Visual Studio Command Prompt (vcvarsall.bat).

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH.

Cependant ma variable d'environnement "CC" est définie!

>>echo %CC%
C:\Anaconda2\MinGW\x86_64-w64-mingw32\bin\gcc.exe
10
João Abrantes

Parce que le message d'erreur de CMake est trompeur ici, je pense qu'il mérite une réponse un peu plus détaillée.

En bref, vous avez rencontré un type de problème de type { poulet-et-œuf .

La détection du compilateur de CMake est puissante, mais depuis - lors du premier essai -

  • vous n'avez donné aucun générateur explicite à utiliser avec -G
  • il n'a pas pu trouver un Visual Studio installé
  • il n'a pas pu trouver de compilateur C/C++ dans votre environnement PATH
  • il n'a pas pu trouver une variable d'environnement CC définie avec le chemin complet du compilateur

La valeur par défaut était nmake.

Maintenant, voici le problème: il se souvient de votre choix implicite de générateur/compilateur dans son cache de variables (voir CMAKE_GENERATOR dans CMakeCache.txt). Quelle est une fonctionnalité très utile, si vous avez plusieurs compilateurs installés.

Mais si vous déclarez ensuite la variable d'environnement CC - comme le suggère le message d'erreur -, il est trop tard car le choix de votre générateur a été mémorisé lors du premier essai.

Je vois deux solutions possibles:

  1. Annuler le choix du générateur en donnant le bon avec cmake.exe -G "MinGW Makefiles" ..
  2. Supprimez le répertoire de sortie binaire de votre projet (y compris CMakeCache.txt) et exécutez cmake.exe .. après avoir ajouté le dossier bin du compilateur à votre environnement PATH.

Références

9
Florian

Comment votre cmake a-t-il été installé? Si vous l'avez installé à l'aide de cygwin, essayez maintenant la dernière version de Windows sur le site officiel de cmake et définissez la variable PATH pour vous assurer que la version correcte de cmake est utilisée. Cela a fonctionné pour moi, j'espère que cela vous aidera aussi.

0
Kexiii