web-dev-qa-db-fra.com

CMAKE_MAKE_PROGRAM introuvable

J'ai atteint le bout de ma corde avec Cmake; il a tellement de potentiel, mais je n'arrive pas à lui faire trouver les outils système de base ("make") pour fonctionner.

SYMPTÔMES

Cmake et l'interface graphique Cmake produisent les éléments suivants (après suppression du fichier CMakeCache.txt):

Processing top-level CMakelists.txt for project swb
CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles".
CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.

Je me concentre sur la recherche de "make" dans cette question. Cependant, j'ai eu beaucoup de problèmes similaires avec CMake qui n'arrivait pas à trouver les bibliothèques et autres fichiers utilitaires (linker, nm, ar, etc.). Les techniques énumérées ci-dessous semblent permettre à CMake de trouver ces fichiers sous Linux.

SYSTÈME

Windows 7 (64 bits); plusieurs versions de MinGW (32 bits/64 bits); Cmake 2.8.4; Emplacement d'installation NON STANDARD pour MinGW (c:/MinGW-32).

Choses que j'ai essayées

1) CMakelists.txt contient "SET (CMAKE_MAKE_PROGRAM c: /MinGW-32/bin/make.exe FORCE)" dans les 10 premières lignes du fichier.

2) Les versions précédentes de CMakelists.txt contenaient:

    find_program(CMAKE_MAKE_PROGRAM
      NAMES make
            make.exe
      DOC "Find a suitable make program for building under Windows/MinGW"
      HINTS c:/MinGW-32/bin )  

3) Définissez CMAKE_MAKE_PROGRAM dans une variable d’environnement cmd.exe avant d’exécuter CMake ou CMake-GUI.

4) Utilisation d'un fichier "toolchain" identifiant CMAKE_MAKE_PROGRAM ainsi que CMAKE_C_COMPILER, etc.

UNE CHOSE QUI A TRAVAILLÉ

CMake réussira à créer des fichiers de construction SI j'utilise l'interface graphique pour remplir la variable CMAKE_MAKE_PROGRAM ("C: /MinGW-32/bin/make.exe").

DES QUESTIONS)

Je peux faire fonctionner CMake si j'identifie le nom du programme make via l'interface graphique. Comment permettre à CMake de trouver mon programme make sans intervention de l'utilisateur avec la combinaison Windows 7 (64 bits)/MinGW?

50
westie314

J'ai deux suggestions: 

  1. Avez-vous make dans votre variable d'environnement% PATH%? Sur mon système, je dois ajouter% MINGW_DIR%\bin à% PATH%.

  2. Avez-vous make installé? Selon votre installation, il peut s'agir d'un package séparé.

  3. Dernier recours: pouvez-vous indiquer le chemin complet à effectuer sur la ligne de commande? cmake -D"CMAKE_MAKE_PROGRAM:PATH=C:/MinGW-32/bin/make.exe" ..\Source

28
André

Dans l'interface graphique, cochez la case "Avancé". Il devrait maintenant montrer plusieurs entrées ci-dessous. Renommez votre fichier mingw32-make.exe en make.exe (vous pouvez simplement en faire une copie) et définissez la variable de chemin de fichier CMAKE_MAKE_PROGRAM sur l'emplacement dudit fichier.

19
CptAJ

Juste résolu le même problème. J'avais MinGW avec GCC et G ++ installé mais pas le Make lui-même. Donc cette commande m'a aidé:

mingw-get.exe install mingw32-make

Puis effacez le cache CMake (CMakeCache.txt dans le répertoire de travail de CMake) et relancez CMake.

11
Melebius

Les réponses précédentes suggéraient de (ré) installer ou de configurer CMake, elles n’ont pas toutes aidé.

Auparavant, la compilation de Make par MinGW utilisait le nom de fichier mingw32-make.exe et porte maintenant le nom make.exe. La plupart des méthodes suggérées pour configurer CMake afin d’utiliser l’autre fichier ne fonctionnent pas.

Copiez simplement make.exe et renommez la copie mingw32-make.exe.

5
Bernd Elkemann

J'ai essayé d'installer les paquets manquants. L'installation de la chaîne d'outils et le redémarrage de CLion sont résolus dans mon cas

pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-extra-cmake-modules
pacman -S mingw-w64-x86_64-make
pacman -S mingw-w64-x86_64-gdb
pacman -S mingw-w64-x86_64-toolchain
3
Umut Uzun

Récemment, j'ai eu le même problème (Compiler OpenCV avec CMake et Qt/MinGW sur WIN764)

Et je pense résoudre ce problème, y compris sur la variable d’environnement PATH (via Control Panel\All Control Panel Items\System\Advanced Sytem Settings) avec% MINGW_DIR%\bin et% CMAKE_DIR%/bin 

De plus, j'ai installé cmake2.8 sur un répertoire facile (sans espaces).

3
nank

J'ai eu exactement le même problème lorsque j'ai essayé de compiler OpenCV avec Qt Creator (MinGW) pour créer les fichiers de bibliothèque statique .a.

Pour ceux qui ont installé Qt 5.2.1 pour Windows 32 bits (MinGW 4.8, OpenGL, 634 Mo) , ce problème peut être résolu si vous ajoutez les éléments suivants à la variable d'environnement du système Path:

C:\Qt\Qt5.2.0\Tools\mingw48_32\bin
3
karlphillip

J'ai eu le même problème et spécifié CMAKE_MAKE_PROGRAM dans un fichier toolchain, cmake ne l'a pas trouvé. Ensuite, j'ai essayé d'ajouter -D CMAKE_MAKE_PROGRAM = ... dans la ligne de commande, puis cela a fonctionné. Ensuite, j'ai essayé de remplacer le générateur de "Makefiles MinGW" par "Makefiles Unix" et de supprimer le -D CMAKE_MAKE_PROGRAM de la ligne de commande, et cela a également fonctionné!

Donc, pour une raison quelconque, lorsque le générateur est défini sur "MinGW Makefiles", le paramètre CMAKE_MAKE_PROGRAM du fichier toolchain n’est pas effectif, mais il l’est pour le générateur "Unix Makefiles".

1
Bert Regelink

J'ai eu le même problème. Installé à l’aide du programme d’installation fourni à l’adresse http://tdm-gcc.tdragon.net/ . Il ajoute les variables d’environnement correctes à path lors de l’installation de mingw (inutile de modifier la variable path manuellement) . 

1
Asitha

Eh bien, s’il est utile, j’ai eu plusieurs problèmes avec cmake, dont celui-ci. Ils ont tous disparu lorsque je corrige la variable globale (dans mon cas, les MinGW Codeblocks) PATH dans le système. Lorsque l'installation de codeblocs n'est pas par défaut et pour une raison inconnue, cette variable globale ne pointe pas au bon endroit. Vérifiez si le chemin de Codeblocks ou de MinGW est correct:

Faites un clic droit sur "Poste de travail"> Propriétés> Propriétés avancées ou Avancé> Variables d'environnement> pour modifier la variable PATH.

Cela a fonctionné pour moi;)

1
Eduardo Segura

J'ai eu le même problème qui est résolu en utilisant ce qui suit:

Essayez de renommer tous les dossiers pour qu’ils ne comportent pas plus de 8 caractères et sans espaces.

0
Hamid Baghernia

Je devais ajouter les lignes suivantes à mon chemin Windows pour résoudre ce problème. CMAKE doit définir les chemins corrects lors de l’installation, à condition de cocher la case correspondante. Cette solution est susceptible d'être différente en fonction de la multitude de versions qu'il est possible d'installer.

C:\msys64\mingw32\bin
C:\msys64\mingw64\bin
0
ozzieisaacs

Cela arrive aussi lorsque je veux juste compiler opencv2.3.2 avec mingw32 (dans les suites tdm-gcc). Souvent, lorsque j'installe tdm-gcc, je souhaite renommer mingw32-make.exe en make.exe. Et je pense que cela pourrait être la question. Si on demande à cmake de générer un fichier de compilation MinGW, il essaiera de trouver ming32-make.exe au lieu de make.exe. Je copie donc le fichier make.exe vers mingw32-make.exe et le reconfigure dans Cmake-gui. Enfin ça marche! Je voudrais donc vous conseiller de savoir sivous avez mingw32-make.exe ou non pour résoudre cette question.

0
ZHU Xinzhao

Il semble que tout le monde a une solution différente. J'ai résolu mon problème comme: 

Lorsque j'installe 64bit, Mingw s’est installé sur: "C:\Program Files\mingw-w64\x86_64-5.1.0-posix-seh-rt_v4-rev0\mingw64\bin" 

Même si mingw-make.exe était sous le chemin ci-dessus, un charecter non valide ou un nom de chemin long confondait CMake. J'essaie d'ajouter le chemin au chemin de l'environnement, essayer de donner CMAKE en tant que paramètre, cela n'a pas fonctionné pour moi. 

Enfin, j'ai déplacé le chemin complexe de mingw-w64 vers "C:/mingw64", puis j'ai défini le chemin de l'environnement, puis redémarré CMake. Problème résolu pour moi.

0
Kadir Erdem Demir

J'ai essayé d'utiliser CMake pour construire GammaRay for Qt sous Windows avec mingw. Donc, j'ai eu le Qt installé. Et j'ai eu le même problème que les autres utilisateurs ici.

L’approche qui a fonctionné pour moi est de lancer cmake-gui à partir de Qt build Prompt (un raccourci créé par l’installateur Qt dans le dossier "Menu Démarrer\Tous les programmes\Qt {QT_VERSION}").

0
Alexandr Zarubkin