Diese Fehlermeldungen
CMake Error at ... (project):
No CMAKE_C_COMPILER could be found.
-- Configuring incomplete, errors occurred!
See also ".../CMakeFiles/CMakeOutput.log".
See also ".../CMakeFiles/CMakeError.log".
oder
CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.
Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
...
-- Configuring incomplete, errors occurred!
bedeuten nur, dass CMake Ihren C / CXX-Compiler zum Kompilieren eines einfachen Testprogramms nicht finden konnte (eines der ersten Dinge, die CMake beim Erkennen Ihrer Build-Umgebung versucht).
Die Schritte zum Auffinden Ihres Problems hängen von der Build-Umgebung ab, die Sie generieren möchten. Die folgenden Tutorials sind eine Sammlung von Antworten auf Stack Overflow und einige meiner eigenen Erfahrungen mit CMake unter Microsoft Windows 7/8/10 und Ubuntu 14.04.
Voraussetzungen
- Sie haben den Compiler / die IDE installiert und es konnte einmal jedes andere Programm kompiliert werden (direkt ohne CMake).
- Sie haben die neueste CMake-Version
- Sie haben Zugriffsrechte auf dem Laufwerk, auf dem CMake Ihre Build-Umgebung generieren soll
Sie haben ein sauberes Build-Verzeichnis (weil CMake die Dinge vom letzten Versuch zwischenspeichert), z. B. als Unterverzeichnis Ihres Quellbaums
Windows cmd.exe
> rmdir /s /q VS2015
> mkdir VS2015
> cd VS2015
Bash Shell
$ rm -rf MSYS
$ mkdir MSYS
$ cd MSYS
und stellen Sie sicher, dass Ihre Befehlsshell auf Ihr neu erstelltes binäres Ausgabeverzeichnis verweist.
Allgemeine Dinge, die Sie versuchen können / sollten
Kann CMake einen beliebigen Standard-Compiler finden und ausführen? Laufen Sie ohne Generator
> cmake ..
-- Building for: Visual Studio 14 2015
...
Perfekt, wenn der zu verwendende Generator richtig bestimmt wurde - wie hier Visual Studio 14 2015
Was ist eigentlich gescheitert?
Suchen Sie im vorherigen Build-Ausgabeverzeichnis nach CMakeFiles\CMakeError.log
Fehlern, die für Sie sinnvoll sind, oder versuchen Sie, das unter CMakeFiles\[Version]\CompilerIdC
| generierte Testprojekt zu öffnen / kompilieren CompilerIdCXX
direkt von der Kommandozeile (wie im Fehlerprotokoll gefunden).
CMake kann Visual Studio nicht finden
Versuchen Sie, die richtige Generatorversion auszuwählen :
> cmake --help
> cmake -G "Visual Studio 14 2015" ..
Wenn dies nicht hilft, versuchen Sie zuerst, die Visual Studio-Umgebungsvariablen festzulegen (der Pfad kann variieren):
> "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
> cmake ..
oder verwenden Sie die VerknüpfungDeveloper Command Prompt for VS2015
in Ihrem Windows-Startmenü unter All Programs
/ Visual Studio 2015
/ Visual Studio Tools
(danke bei @Antwane für den Hinweis).
Hintergrund : CMake unterstützt alle Visual Studio-Versionen und -Varianten (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate usw.). Um den Speicherort des Compilers zu bestimmen, wird eine Kombination aus Durchsuchen der Registrierung (z. B. at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir
), Systemumgebungsvariablen und - falls keiner der anderen etwas gefunden hat - einfach versucht, den Compiler aufzurufen.
CMake kann GCC (MinGW / MSys) nicht finden
Sie starten die MSys- bash
Shell mit msys.bat
und versuchen einfach, direkt aufzurufengcc
$ gcc
gcc.exe: fatal error: no input files
compilation terminated.
Hier hat es gefunden gcc
und beschwert sich, dass ich ihm keine Parameter zum Arbeiten gegeben habe.
Also sollte folgendes funktionieren:
$ cmake -G "MSYS Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
$ make
Wenn GCC nicht gefunden wurde, rufen Sie export PATH=...
auf, um den Compilerpfad hinzuzufügen (siehe Festlegen der Umgebungsvariablen PATH im CMake-Skript? ), Und versuchen Sie es erneut.
Wenn es immer noch nicht funktioniert, versuchen Sie, den CXX
Compilerpfad direkt durch Exportieren festzulegen (Pfad kann variieren).
$ export CC=/c/MinGW/bin/gcc.exe
$ export CXX=/c/MinGW/bin/g++.exe
$ cmake -G "MinGW Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
$ mingw32-make
Weitere Informationen finden Sie unter Festlegen eines neuen GCC-Pfads für CMake
Hinweis : Wenn Sie den Generator "MinGW Makefiles" verwenden, müssen Sie das mingw32-make
mit MinGW verteilte Programm verwenden
Funktioniert immer noch nicht? Das ist komisch. Stellen Sie sicher, dass der Compiler vorhanden ist und über ausführbare Rechte verfügt (siehe auch Kapitel über die Voraussetzungen oben).
Andernfalls besteht der letzte Ausweg von CMake darin, keine Compilersuche selbst durchzuführen und die internen Variablen von CMake direkt von festzulegen
$ cmake -DCMAKE_C_COMPILER=/c/MinGW/bin/gcc.exe -DCMAKE_CXX_COMPILER=/c/MinGW/bin/g++.exe ..
Weitere Informationen finden Sie unter Cmake berücksichtigt -D CMAKE_CXX_COMPILER = g ++ und den Compiler für die Fehlereinstellung von Cmake nicht
Alternativ können diese Variablen auch über cmake-gui.exe
Windows festgelegt werden. Siehe Cmake kann den Compiler nicht finden
Hintergrund : Ähnlich wie bei Visual Studio. CMake unterstützt alle Arten von GCC-Aromen. Es durchsucht die Umgebungsvariablen (CC, CXX usw.) oder versucht einfach, den Compiler aufzurufen. Darüber hinaus wird es keine Präfixe erkennen (wenn Cross-Kompilierung ) und versucht , es zu allen binutils der GNU Compiler Toolchain hinzufügen ( ar
, ranlib
, strip
, ld
, nm
, objdump
, und objcopy
).