72 votes

Exécuter CMake sous Windows

J'essaie actuellement de faire fonctionner CMake sur mon système Windows 7 (64 bits). Je veux compiler TagLib pour une utilisation ultérieure avec une application Qt sur laquelle je travaille. Je voudrais la compiler avec MinGW (et non Visual C++ comme dans cette autre question ).

Je télécharge l'installateur (cmake-2.8.3-win32-x86.exe) et l'installe (je choisis également d'ajouter CMake à mon chemin). Je vais ensuite dans le répertoire où se trouve le fichier CMakeLists.txt et j'exécute cmake . . Il me donne alors cette erreur géante.

C:\Users\Joel\Downloads\taglib-1.6.3>cmake .
CMake Warning at CMakeLists.txt:1 (project):
  To use the NMake generator, cmake must be run from a shell that can use the
  compiler cl from the command line.  This environment does not contain
  INCLUDE, LIB, or LIBPATH, and these must be set for the cl compiler to
  work.

-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Warning at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-cl.cmake:
28 (ENABLE_LANGUAGE):
  To use the NMake generator, cmake must be run from a shell that can use the
  compiler cl from the command line.  This environment does not contain
  INCLUDE, LIB, or LIBPATH, and these must be set for the cl compiler to
  work.
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCInformation.cmake:60 (INCLUDE)
  CMakeLists.txt:1 (project)

CMake Error: your RC compiler: "CMAKE_RC_COMPILER-NOTFOUND" was not found.   Please set CMAKE_RC_COM
PILER to a valid compiler path or name.
-- Check for CL compiler version
-- Check for CL compiler version - failed
-- Check if this is a free VC compiler
-- Check if this is a free VC compiler - yes
-- Using FREE VC TOOLS, NO DEBUG available
-- Check for working C compiler: cl
CMake Warning at CMakeLists.txt:2 (PROJECT):
  To use the NMake generator, cmake must be run from a shell that can use the
  compiler cl from the command line.  This environment does not contain
  INCLUDE, LIB, or LIBPATH, and these must be set for the cl compiler to
  work.

CMake Warning at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-cl.cmake:
28 (ENABLE_LANGUAGE):
  To use the NMake generator, cmake must be run from a shell that can use the
  compiler cl from the command line.  This environment does not contain
  INCLUDE, LIB, or LIBPATH, and these must be set for the cl compiler to
  work.
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCInformation.cmake:60 (INCLUDE)
  CMakeLists.txt:2 (PROJECT)

CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeRCInformation.cmake:22
(GET_FILENAME_COMPONENT):
  get_filename_component called with incorrect number of arguments
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-cl.cmake:28 (ENABLE_LANG
UAGE)
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCInformation.cmake:60 (INCLUDE)
  CMakeLists.txt:2 (PROJECT)

CMake Error: CMAKE_RC_COMPILER not set, after EnableLanguage
CMake Error: your C compiler: "cl" was not found.   Please set CMAKE_C_COMPILER to a valid compiler
path or name.
CMake Error: Internal CMake error, TryCompile configure of cmake failed
-- Check for working C compiler: cl -- broken
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52
(MESSAGE):
  The C compiler "cl" is not able to compile a simple test program.

  It fails with the following output:

  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:1 (project)

CMake Error: your C compiler: "cl" was not found.   Please set CMAKE_C_COMPILER to a valid compiler
path or name.
CMake Error: your CXX compiler: "cl" was not found.   Please set CMAKE_CXX_COMPILER to a valid compi
ler path or name.
-- Configuring incomplete, errors occurred!

C:\Users\Joel\Downloads\taglib-1.6.3>

J'ai été assez surpris qu'il échoue si durement dès le départ, étant donné qu'il se présente comme un produit multiplateforme.

J'ai essayé de placer INCLUDE, LIB et LIBPATH (variables d'environnement Windows) dans mon répertoire de binaires MinGW ( C:\MinGW\bin ) mais je reçois toujours la même erreur. J'ai également essayé de définir CMAKE_C_COMPILER et CMAKE_CXX_COMPILER à l'emplacement de g++ ( C:\MinGW\bin\g ++).

Quelqu'un sait-il ce qui se passe ici ?

SOLUTION :

Selon la suggestion de tibur, j'ai utilisé l'interface graphique de cmake pour créer les fichiers make. Je suis ensuite allé dans le répertoire taglib et j'ai exécuté mingw32-make.exe pour faire la construction proprement dite.

111voto

tibur Points 7082

Le générateur par défaut de Windows semble être réglé sur NMAKE. Essayez d'utiliser :

cmake -G "MinGW Makefiles"

Ou utilisez l'interface graphique, et sélectionnez Les Makefiles de MinGW lorsqu'on vous demande de choisir un générateur. N'oubliez pas de nettoyer le répertoire où vous avez essayé d'exécuter CMake, ou de supprimer le cache dans l'interface graphique. Sinon, il essaiera à nouveau avec NMAKE.

11 votes

L'étape suivante consiste à exécuter mingw32-make.exe all pour faire la construction proprement dite.

2 votes

+1 Il me manquait mingw32-make.exe et a été accueilli par un compilateur CXX cryptique No sane. Gnu Make pour Windows ne suffit pas, la version MinGW est nécessaire.

3 votes

Si vous êtes dans un shell Bash (sous Windows), vous devez apparemment utiliser "MSYS Makefiles".

14voto

user1110078 Points 153

Il y a un vcvars32.bat dans votre répertoire d'installation de Visual Studio. Vous pouvez ajouter l'appel cmd.exe à la fin de ce programme batch et le lancer. A partir de ce shell, vous pouvez utiliser CMake ou cmake-gui et cl.exe sera connu de CMake.

1 votes

Le code pour ajouter l'appel à cmd.exe dans le vcvars32/64.bat est : @call "cmd.exe"

0voto

Valerio Points 286

La commande qui a fonctionné pour moi est :

$ cmake -G "MSYS Makefiles" ..

Je travaille sur MSYS2/Win10 en compilant une application QT5 à 64 bits (en utilisant le shell MINGW64).

0voto

user17556237 Points 1

Utilisez : cmake --build après cmake -G "MinGW Makefiles

-4voto

Daniel Lidström Points 2970

Essayez d'exécuter CMake à partir d'une invite de commande Visual Studio.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X