CMAKE_MAKE_PROGRAM nicht gefunden

72

Ich habe mit CMake das Ende meines Seils erreicht; es hat so viel Potenzial, aber ich kann es nicht dazu bringen, die grundlegenden Systemwerkzeuge (dh make) zu finden, um zu funktionieren.

Symptome

CMake und die CMake-GUI erzeugen Folgendes (nach dem Löschen der Datei 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.

Ich konzentriere mich darauf, makediese Frage zu finden. Ich hatte jedoch auch viele der gleichen Probleme, bei denen CMake keine Bibliotheken und andere Dienstprogrammdateien (Linker, nm, ar usw.) finden konnte. Die unten aufgeführten Techniken scheinen es CMake zu ermöglichen, diese Dateien unter Linux zu finden.

SYSTEM

Windows 7 (64-Bit); mehrere Versionen von MinGW (32-Bit / 64-Bit); Cmake 2.8.4; NICHT STANDARD-Installationsort für MinGW (c: / MinGW-32).

DINGE, DIE ICH VERSUCHT HABE

  1. CMakelists.txt enthält SET( CMAKE_MAKE_PROGRAM c:/MinGW-32/bin/make.exe FORCE )in den ersten 10 Zeilen der Datei.

  2. Frühere Versionen von CMakelists.txt enthielten:

    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. Legen Sie CMAKE_MAKE_PROGRAMeine Umgebungsvariable cmd.exe fest, bevor Sie CMake oder CMake-GUI ausführen.

  4. Verwendung einer "Toolchain" -Datei, die sowohl usw. CMAKE_MAKE_PROGRAMals auch identifiziert CMAKE_C_COMPILER.

Eine Sache, die funktioniert hat

CMake erstellt erfolgreich Build-Dateien, CMAKE_MAKE_PROGRAMwenn ich die Variable über die GUI auffülle ("C: /MinGW-32/bin/make.exe").

FRAGEN)

Ich kann CMake zum Laufen bringen, wenn ich den Namen des make-Programms über die GUI identifiziere. Wie kann CMake mein Make-Programm ohne Benutzereingriff mit der Windows 7 (64-Bit) / MinGW-Kombination finden?

westie314
quelle

Antworten:

35

Ich habe zwei Vorschläge:

  1. Haben Sie in Ihrer Umgebungsvariablen% PATH% make erstellt? Auf meinem System muss ich% MINGW_DIR% \ bin zu% PATH% hinzufügen.

  2. Hast du make installiert? Abhängig von Ihrer MingW-Installation kann es sich um ein separates Paket handeln.

  3. Letzter Ausweg: Können Sie den vollständigen Pfad für die Befehlszeile übergeben? cmake -D"CMAKE_MAKE_PROGRAM:PATH=C:/MinGW-32/bin/make.exe" ..\Source

André
quelle
Danke für die Vorschläge! Ich hatte bereits% MINGW_DIR% \ bin in meinem Pfad und make.exe befindet sich definitiv im Verzeichnis% MINGW_DIR% \ bin. Irgendwelche anderen Ideen!?
Westie314
@ Westie314: Ist Make in deinem Weg? Wenn Sie eine Befehlszeile öffnen und "make --version" eingeben, was wird angezeigt?
Stephen Newell
5
Sucht CMake nach 'make' oder nach 'mingw32-make'? Wenn letzteres der Fall ist, muss auch dieser auf dem Weg sein.
André
22

Aktivieren Sie in der GUI das Kontrollkästchen "Erweitert". Es sollte nun mehrere Einträge unten zeigen. Benennen Sie Ihre Datei mingw32-make.exe in make.exe um (Sie können einfach eine Kopie erstellen) und setzen Sie die Dateipfadvariable CMAKE_MAKE_PROGRAM auf den Speicherort dieser Datei.

CptAJ
quelle
2
Dies sollte als Antwort akzeptiert werden. Bei mir hat es funktioniert: Aktivieren Sie 'Erweitert', dann wird die Variable CMAKE_MAKE_PROGRAM angezeigt. Ändern Sie einfach NOT_FOUND_SOMETHING in Ihre C: /MinGW/bin/make.exe oder in einen beliebigen Pfad.
Smoothware
Meine GUI zeigt keine Einstellungen an, die CMAKE_MAKE_PROGRAM anzeigen. Irgendwelche Ideen?
Schütze
Sie können den Eintrag manuell erstellen, indem Sie auf "Eintrag hinzufügen" klicken und die Felder wie folgt ausfüllen: Name - CMAKE_MAKE_PROGRAM, Typ - FILEPATH, Wert - X:/Path/To/Make. Oder über die Befehlszeile durch Hinzufügen -DCMAKE_MAKE_PROGRAM=X:/Path/To/Make. Hoffe es hilft
FallenWarrior
15

Ich habe gerade das gleiche Problem gelöst. Ich hatte MinGW mit GCC und G ++ installiert, aber nicht make. Dieser Befehl hat mir geholfen:

mingw-get.exe install mingw32-make

Löschen Sie nach dem Ausführen den CMake-Cache (löschen Sie die CMakeCache.txtDatei im Arbeitsverzeichnis des CMake) und führen Sie CMake erneut aus.

Melebius
quelle
2
Fügen Sie in der MinGW-Grundeinstellung mingw32-base hinzu, um make zu erhalten.
Slackwing
5

Frühere Antworten schlugen vor, CMake (neu) zu installieren oder zu konfigurieren. Sie alle halfen nicht.

Früher verwendete MinGWs Zusammenstellung von Make den Dateinamen mingw32-make.exeund jetzt ist es so make.exe. Die meisten vorgeschlagenen Möglichkeiten, CMake für die Verwendung der anderen Datei zu konfigurieren, funktionieren nicht.

Kopieren Sie einfach die Kopie make.exeund benennen Sie sie um mingw32-make.exe.

Bernd Elkemann
quelle
1
Lebenszeitersparnis! +1
Ebrahim Karimi
5

Ich habe versucht, die fehlenden Pakete zu installieren. Das Installieren der Toolchain und das Neustarten von CLion haben in meinem Fall alles gelöst:

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
Umut Uzun
quelle
Dies funktioniert perfekt für neuere Versionen von MinGW, bei denen mingw32-make nicht mehr existiert.
Zoe
5

Auf Ubuntu habe ich den Compiler vermisst. Behoben mit:

sudo apt install build-essential
ErichBSchulz
quelle
3

Vor kurzem hatte ich das gleiche Problem (Kompilieren von OpenCV mit CMake und Qt / MinGW auf WIN764)

Und ich denke, ich löse dies einschließlich meiner Umgebungsvariablen PATH (bis Control Panel\All Control Panel Items\System\Advanced Sytem Settings) mit% MINGW_DIR% \ bin und% CMAKE_DIR% / bin

Außerdem habe ich cmake2.8 in einem einfachen Verzeichnis installiert (ohne Leerzeichen).

nank
quelle
3

Ich hatte genau das gleiche Problem, als ich versuchte, OpenCV mit Qt Creator (MinGW) zu kompilieren, um die statischen Bibliotheksdateien .a zu erstellen.

Für diejenigen, die Qt 5.2.1 für Windows 32-Bit (MinGW 4.8, OpenGL, 634 MB) installiert haben , kann dieses Problem behoben werden, wenn Sie der Umgebungsvariablen des Systems Folgendes hinzufügen Path:

C:\Qt\Qt5.2.0\Tools\mingw48_32\bin
Karlphillip
quelle
1

Ich hatte das gleiche Problem. Installiert mingw mit dem Installationsprogramm unter http://tdm-gcc.tdragon.net/ . Bei der Installation von mingw werden dem Pfad die richtigen Umgebungsvariablen hinzugefügt (die Pfadvariable muss nicht manuell bearbeitet werden). Das hat den Trick für mich getan.

Asitha
quelle
1

Nun, wenn es nützlich ist, hatte ich einige Probleme mit cmake, einschließlich dieses. Sie alle verschwanden, als ich den Pfad der globalen Variablen (in meinem Fall die MinGW-Codeblöcke) im System korrigierte. Wenn die Installation von Codeblocks nicht standardmäßig ist und aus einem unbekannten Grund, zeigt diese globale Variable nicht auf die richtige Stelle. Überprüfen Sie, ob der Pfad von Codeblocks oder MinGW korrekt ist:

Klicken Sie mit der rechten Maustaste auf "Arbeitsplatz"> Eigenschaften> Erweiterte Eigenschaften oder Erweitert> Umgebungsvariablen>, um die PATH-Variable zu ändern

Es hat bei mir funktioniert;)

Eduardo Segura
quelle
1

Ich hatte das gleiche Problem und habe CMAKE_MAKE_PROGRAM in einer Toolchain-Datei angegeben, cmake hat es nicht gefunden. Dann habe ich versucht, -D CMAKE_MAKE_PROGRAM = ... in die Befehlszeile einzufügen, dann hat es funktioniert. Dann habe ich versucht, den Generator von "MinGW Makefiles" auf "Unix Makefiles" zu ändern und das -D CMAKE_MAKE_PROGRAM von der Kommandozeile entfernt, und dann hat es auch funktioniert!

Wenn der Generator auf "MinGW Makefiles" eingestellt ist, ist die Einstellung CMAKE_MAKE_PROGRAM in der Toolchain-Datei aus irgendeinem Grund nicht wirksam, für den Generator "Unix Makefiles" jedoch.

Bert Regelink
quelle
Es scheint, dass zusätzlich make.exe in der Umgebungsvariablen PATH sein muss.
Bert Regelink
1

Es scheint, dass jeder eine andere Lösung hat. Ich habe mein Problem gelöst wie:

Bei der Installation von 64-Bit-Mingw wurde Folgendes installiert: "C: \ Programme \ mingw-w64 \ x86_64-5.1.0-posix-seh-rt_v4-rev0 \ mingw64 \ bin"

Obwohl sich mingw-make.exe unter dem obigen Pfad befand, verwirrte ein ungültiger Charecter oder ein langer Pfadname CMake. Ich versuche, dem Umgebungspfad einen Pfad hinzuzufügen und CMAKE als Parameter anzugeben, der bei mir nicht funktioniert hat.

Schließlich habe ich den komplexen Pfad von mingw-w64 nach "C: / mingw64" verschoben, dann den Umgebungspfad festgelegt und CMake neu gestartet. Problem für mich gelöst.

Kadir Erdem Demir
quelle
0

Ich hatte das gleiche Problem, das mit folgendem gelöst wird:

Versuchen Sie, alle Ordner so umzubenennen, dass sie nicht länger als 8 Zeichen und ohne Leerzeichen sind.

Hamid Baghernia
quelle
0

Es passiert auch, wenn ich opencv2.3.2 nur mit mingw32 kompilieren möchte (in tdm-gcc-Suiten). Wenn ich tdm-gcc installiere, möchte ich die mingw32-make.exe häufig in make.exe umbenennen. Und ich denke, das könnte die Frage sein. Wenn cmake aufgefordert wird, ein MinGW-Makefiles zu generieren, wird versucht, ming32-make.exe anstelle von make.exe zu finden. Also kopiere ich die make.exe nach mingw32-make.exe und konfiguriere sie in Cmake-gui neu. Endlich funktioniert es! Daher möchte ich Ihnen raten, herauszufinden, ob Sie mingw32-make.exe haben oder nicht, um diese Frage zu lösen.

ZHU Xinzhao
quelle
0

Ich habe versucht, mit CMake GammaRay für Qt unter Windows mit mingw zu erstellen. Also hatte ich den Qt installiert. Und ich hatte das gleiche Problem wie andere Benutzer hier.

Der Ansatz, der für mich funktioniert hat, ist das Starten von cmake-gui über die Qt-Build-Eingabeaufforderung (eine Verknüpfung, die vom Qt-Installationsprogramm im Ordner "Startmenü \ Alle Programme \ Qt {QT_VERSION}" erstellt wurde).

Alexandr Zarubkin
quelle
0

Ich musste die folgenden Zeilen zu meinem Windows-Pfad hinzufügen, um dies zu beheben. CMAKE sollte bei der Installation ansonsten die richtigen Pfade festlegen, solange Sie das Kontrollkästchen aktivieren. Dies ist wahrscheinlich eine andere Lösung, abhängig von der Vielzahl der Versionen, die installiert werden können.

C:\msys64\mingw32\bin
C:\msys64\mingw64\bin
Ozzieisaacs
quelle