Nachdem Sie Visual Studio 2015 installiert und CMake in einem früheren Projekt ausgeführt haben, gibt CMake die Meldung aus, dass der C-Compiler nicht gefunden wurde.
The C compiler identification is unknown
The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:4 (PROJECT):
No CMAKE_C_COMPILER could be found.
CMake Error at CMakeLists.txt:4 (PROJECT):
No CMAKE_CXX_COMPILER could be found.
Ich habe nach cl.exe
im Visual Studio-Ordner C:\Program Files\Microsoft Visual Studio 14.0
gesucht und konnte es nicht finden.
Wie richte ich CMake für die Arbeit unter Windows mit Visual Studio 2015 ein?
Ich habe die Lösung gefunden. Während das Visual Studio IDE erfolgreich installiert wurde, wurden keine Build-Tools installiert und der C++ - Compiler daher nicht installiert.
Durch den Versuch, manuell ein C++ - Projekt in der Visual Studio 2015-Benutzeroberfläche erstellen zu erstellen,} _ konnte ich es zum Downloaden der C++ - Pakete auffordern. CMake konnte den Compiler dann problemlos finden.
Hier ist die Lösung, die für mich funktioniert hat:
Hoffentlich sollte es ohne Probleme laufen.
Ich habe in der Datei CMakeError.log gesucht und einen Fehler über cannot run 'rc.exe'
gefunden.
Ich suchte und fand diese Antwort , um RC.Exe und RcDll.Dll aus dem Microsoft SDKs-Bin in den VC - Bin zu kopieren, und dann arbeitete CMake.
Edit: Die oberste Antwort auf eine andere Frage weist darauf hin, dass es sich um ein PFAD-Problem handelt. Es könnte also ausreichend sein, um sicherzustellen, dass sich die Microsoft SDK-Bin in Ihrem PFAD befindet.
Stellen Sie sicher, dass Sie im Generator die richtige Version von Visual Studio verwenden. Ich hatte Visual Studio 15 falsch ausgewählt, als Visual Studio 14 installiert wurde.
Für mich habe ich die CMakeError.log
-Datei überprüft und festgestellt:
[...] Fehler MSB8036: Das Windows SDK Version 8.1 wurde nicht gefunden. Installieren Sie die erforderliche Version des Windows SDK oder ändern Sie die SDK-Version in den Projekteigenschaftsseiten oder klicken Sie mit der rechten Maustaste auf die Projektmappe und wählen Sie "Lösung neu planen".
Dies gilt trotz der Verwendung von Visual Studio 2017 unter Windows 7. Es scheint also, dass CMake versucht, sein Erkennungsprojekt mit dem Windows 8.1-SDK zu erstellen.
Ich habe das Visual Studio-Installationsprogramm verwendet, um diese Komponente hinzuzufügen. Jetzt ist CMake fröhlich.
Wenn keine der oben genannten Lösungen funktioniert hat, halten Sie an und führen Sie eine Überprüfung der Systemintegrität durch.
Ich wurde mit der falschen -G <config>
-Zeichenkette verbrannt und es gab mir diesen irreführenden Fehler.
Führen Sie zuerst die VS-Eingabeaufforderung nicht die reguläre Eingabeaufforderung aus. Sie finden es in Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015
Hiermit werden alle korrekten Pfade zu VS-Tools usw. eingerichtet.
Nun sehen Sie, welche Generatoren von cmake verfügbar sind ...
cmake -help
...<snip>...
The following generators are available on this platform:
Visual Studio 15 [Arch] = Generates Visual Studio 15 project files.
Optional [Arch] can be "Win64" or "ARM".
Visual Studio 14 2015 [Arch] = Generates Visual Studio 2015 project files.
Optional [Arch] can be "Win64" or "ARM".
Visual Studio 12 2013 [Arch] = Generates Visual Studio 2013 project files.
Optional [Arch] can be "Win64" or "ARM".
Visual Studio 11 2012 [Arch] = Generates Visual Studio 2012 project files.
Optional [Arch] can be "Win64" or "ARM".
Visual Studio 10 2010 [Arch] = Generates Visual Studio 2010 project files.
Optional [Arch] can be "Win64" or "IA64".
...
Wählen Sie dann die entsprechende Zeichenfolge aus, wobei das [Arch] hinzugefügt wird.
mkdir _build
cd _build
cmake .. -G "Visual Studio 15 Win64"
Wenn Sie cmake in einem Unterverzeichnis ausführen, ist es einfacher, "sauber" zu machen, da Sie einfach alles in diesem Verzeichnis löschen können.
Ich habe ein Upgrade auf Visual Studio 15 durchgeführt, aber nicht aufgepasst und versucht, für 2012 zu generieren.
Menü → Visual Studio 2015 → MSBuild-Eingabeaufforderung für Visual Studio 2015. Dann kann CMake cl.exe
finden.
set PATH="c:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\";%PATH%
Ändern Sie den oberen Pfad dahin, wo Ihr Windows SDK installiert ist.
CMake kann rc.exe
finden.
cd zum Pfad von CMakeLists.txt
und mache:
md .build
cd .build
cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release
cmake --build .
Der Parameter hinter -G
sollte von CMake abgerufen werden. Verwenden Sie --help
; Sie können den Generator haben oder nicht.
Als Alternative zu der akzeptierten Antwort können Sie C++ direkt installieren wie hier beschrieben .
Wenn Sie mit Visual Studio 2017 arbeiten, benötigen Sie mindestens CMake 3.8!
Ich hatte dieses Problem unter Windows 10 bei der Verwendung von Visual Studio 2015 Professional, während Visual Studio 2015 Express funktionierte! Unter Windows 7 funktionierten beide Visual Studio-Versionen.
Neue Projekte, die mit Visual Studio 2015 Professional IDE erstellt wurden, wurden erfolgreich kompiliert, aber CMake konnte die Compiler-Berichterstellung nicht finden:
The C compiler identification is unknown
The CXX compiler identification is unknown
Ich habe CMake von 3.4.1 auf 3.11.4 aufgerüstet, und jetzt ist das Problem weg.
In meinem Fall bestand das Problem darin, dass das übergeordnete Projekt, das googletest über führt, über
add_subdirectory(gtest_dir)
wurde definiert als
PROJECT( projname CXX )
Irgendwie erkennt CMake nicht
PROJECT(sub_project_name CXX C)
da der C-Compiler nicht im übergeordneten gesetzt ist.
Ich habe das Problem gelöst mit
PROJECT( projname CXX C)
in meiner Hauptdatei CMakeLists.txt
.
Schauen Sie in die Cmakelists.txt, wenn Sie ARM finden, müssen Sie C++ für ARM und vcvarsall.bat für ARM bin Ordner installieren.
Es sind diese Pakete:
C++ Universal Windows Platform für ARM64 "Nicht erforderlich"
Visual C++ - Compiler und -Bibliotheken für ARM "Nicht erforderlich"
Visual C++ - Compiler und -Bibliotheken für ARM64 "Sehr wahrscheinlich erforderlich"
Required for finding Threads on ARM
enable_language(C)
enable_language(CXX)
Dann könnten die Probleme verschwinden:
Es wurde kein CMAKE_C_COMPILER gefunden.
Es wurde kein CMAKE_CXX_COMPILER gefunden.
Wenn oben Ihr Problem nicht löst?
Optional können Sie die Optionen C und CXX in cmakelists.txt entfernen, indem Sie # vor der enable_language (C) setzen. Und vermeiden Sie die Kompilierung von Android ARM Prozessoren.
Ein paar Tipps:
Mein Problem war eine Kombination der zuvor genannten: Ich habe die Compilerversion auf 15 statt 14 gesetzt und als sie korrigiert wurde, musste ich den Cache löschen.
Ich habe auch den Visual Studio-Befehl Prompt als Administrator gestartet und von dort aus die cmake-gui.exe ausgeführt
Dann hat alles so funktioniert, wie es sollte.
Gelöst durch Hinzufügen der fehlenden Komponente Ändern-> weiter wie folgt hinzufügen
Ich bin auf das gleiche Problem gestoßen und habe es behoben, indem ich die Installation von Visual Studio neu gestartet und die folgende Option überprüft habe:
Windows and Web Development
/Universal Windows App Development Tools
/Windows 10 SDK
Es enthält die standardmäßigen C++ - Header, die in den meisten Anwendungen verwendet werden. Daher ist es häufig erforderlich, sie auch zu installieren.
Dies ist möglicherweise eine andere Lösung für Benutzer mit der neuesten Version von Windows 10 Creator:
Stack Overflow post Schwerwiegender Fehler LNK1104: Datei 'gdi32.lib' kann nicht geöffnet werden
In meinem Fall gab es einen Umgebungsvariablensatz, der den Grund für diesen Fehler darstellte. Das Problem wurde nach dem Löschen von cxx_flags aus den Umgebungsvariablen behoben.
Keine der vorherigen Lösungen funktionierte für mich. Ich habe jedoch festgestellt, dass das auf meinem Computer erstellte Verzeichnis zwar für Visual Studio 14 erstellt wurde, obwohl ich Visual Studio Version 15 (nicht zu verwechseln mit Visual Studio 2015) installiert habe.
Beim Festlegen von Visual Studio 14 beim Drücken der Konfigurationstaste hat es funktioniert.
Ich habe dieses Problem mit CMake 3.12.1 nach einem Update von Visual Studio 2017 erhalten. Ich habe einfach CMake erneut ausgeführt und es hat funktioniert.
In meinem Fall konnte ich in CMakeError.log
sehen, dass CMake das Windows SDK (MSB8003: Could not find WindowsSDKDir variable from the registry
) nicht finden konnte.
Die Version kann beim ersten CMake-Lauf in der Befehlszeile angegeben werden:
-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=
Nachdem ich das eingestellt hatte, bin ich weiter gekommen, habe aber später mehr Probleme gefunden (also gehe ich davon aus, dass meine Umgebung irgendwie durcheinander ist), aber vielleicht hilft es jemandem bei diesem Problem.
ich habe diese Lösung bei Stackoverflow gefunden und arbeite für mich, obwohl ich nicht mit anderen Lösungen arbeite, wenn Sie ein Windows 10-Betriebssystem haben. Mit den folgenden Schritten wird das Problem behoben:
1) Gehen Sie zu C:\Programme (x86)\Microsoft SDKs\Windows\v7.1A\Bin
2) Kopieren Sie dann RC.exe und RcDll aus dieser Datei
3) Gehen Sie zu C:\Programme (x86)\Microsoft Visual Studio 14.0\VC\bin und fügen Sie die beiden kopierten Dateien ein.
das ist alles, was ich hoffe, es ist hilfreich ...
Das Überprüfen von CMakeErrors.log in CMakeFiles ergab:
C:\Programme (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Platforms\x64\PlatformToolsets\v140_xp\Toolset.targets (36,5): Warnung MSB8003: Die Variable WindowsSdkDir_71A wurde in der Registrierung nicht gefunden. TargetFrameworkVersion oder PlatformToolset haben möglicherweise eine ungültige Versionsnummer.
Der Fehler bedeutet, dass die Build-Tools für XP (v140_xp) nicht installiert sind. Um das Problem zu beheben, habe ich die entsprechende Funktion im Visual Studio 2019-Installationsprogramm auf der Registerkarte "Einzelne Komponenten" installiert:
Ich hatte ein ähnliches Problem: Die Visual C++ - Generatoren waren nicht einmal auf der Liste, wenn cmake --help
ausgeführt wurde.
Ich habe where cmake
in der Konsole ausgeführt und festgestellt, dass cygwin auch eine eigene cmake.exe -Datei bereitstellt, die verwendet wurde. Das Ändern der Reihenfolge der Verzeichnisse in PATH behebt das Problem.