CMake findet keinen Visual C ++ - Compiler

118

Nach der Installation von Visual Studio 2015 und dem Ausführen von CMake in einem früheren Projekt werden CMake-Fehler angezeigt, die darauf hinweisen, dass der C-Compiler nicht gefunden werden konnte.

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 cl.exeim Visual Studio-Ordner nach gesucht C:\Program Files\Microsoft Visual Studio 14.0und konnte ihn nicht finden.

Wie richte ich CMake für die Arbeit unter Windows mit Visual Studio 2015 ein?

Asher
quelle
1
Vielleicht entspricht der Installationspfad von 2015 nicht den Erwartungen von CMake? Welche Version von CMake verwenden Sie? Ich weiß auch nichts über die Windows-Version von CMake, aber es ist möglich, dass CMake in der PATHnach dem benötigten Programm sucht. Wenn es also nicht aktualisiert wird, kann es den Compiler nicht finden.
Einige Programmierer Typ
1
Ich verwende cmake Version 3.2.3, die behauptet, Unterstützung für Visual Studio 2015
Asher
1
Verwenden Sie Version 3.2.x, ich habe dieses Problem festgestellt, als ich Cmake vor VS2015 installiert habe. Installieren Sie cmake neu, um dies für mich zu beheben
Andiana
Manchmal vergessen Sie einfach, Ihren Computer neu zu starten, oder möchten dies nach einer Visual Studio-Installation oder -Update nicht tun. In diesem Fall findet CMake Ihren Compiler nicht.
Noki

Antworten:

124

Ich habe die Lösung gefunden. Während die Visual Studio IDE erfolgreich installiert wurde, wurden keine Build-Tools installiert und daher der C ++ - Compiler nicht installiert.

Durch den Versuch , ein C ++ - Projekt manuell in der GUI von Visual Studio 2015 zu erstellen, konnte ich es auffordern, die C ++ - Pakete herunterzuladen. CMake konnte den Compiler dann problemlos finden.

Asher
quelle
2
Cool, diese Antwort gab mir den Hinweis. Ich verwende meine VS2015 ISO, um die C ++ - Komponenten zu installieren und das Problem zu lösen.
Peter Liang
Ich habe auch mit dem VS2015 ISO installiert und es wurden nur die grundlegenden vb / c # -Teile installiert. Musste ISO erneut starten, um andere C ++ - Inhalte zu ändern und zu installieren.
Abhinav Gauniyal
2
Genau welche Pakete / Komponenten / Sachen habt ihr installiert? Ich habe ein Visual C ++ / Win32Project erstellt, zwei Komponenten installiert und in VS OK ausgeführt, aber cmake hat sich weiterhin wie zuvor beschwert. Vielen Dank. -S
ssimm
Das ist sehr nett!
user2434741
2
Dies hat auch mit vs 2017 funktioniert - was für eine seltsame Sache! Danke für den Tipp, Kumpel!
Steve Horvath
36

Hier ist die Lösung, die für mich funktioniert hat:

  1. Öffnen Sie das Visual Studio-Eingabeaufforderungstool (als Administrator). Unter Windows 10 wird es möglicherweise als "Entwickler-Eingabeaufforderung" bezeichnet.
  2. Navigieren Sie zu der ausführbaren CMake-Datei
  3. Führen Sie Cmake.exe aus
  4. Gehen Sie wie gewohnt vor, um den Build- und Quellordner auszuwählen
  5. Wählen Sie den entsprechenden Visual Studio-Compiler aus und klicken Sie auf die Schaltfläche Konfigurieren

Hoffentlich sollte es ohne Probleme laufen.

Vermögen
quelle
3
Ich glaube nicht, dass Sie die VS-Eingabeaufforderung als Administrator ausführen müssen. Wenn Sie jedoch die VS-Befehlsaufforderung ausführen, wird alles, wonach cmake sucht, auf den Pfad gesetzt. Abhängig davon, wie Sie CMake installiert haben (ob Sie es in den Pfad eingefügt haben), können Sie auch zu Ihrem Build-Verzeichnis navigieren und cmake ..von dort aus ausführen . Trotzdem upvoted, weil das Git-Bash-Terminal zum Beispiel nicht automatisch alles auf seinen Weg bringt. Das hat mir geholfen!
Hetepeperfan
1
Dies scheint eher eine Problemumgehung als eine Lösung zu sein, da die IDE-Generatoren normalerweise nicht die verschiedenen Umgebungsvariablen benötigen, die im Eingabeaufforderungssatz dev enthalten sind (dies ist nur erforderlich, wenn Sie einen Makefile-Generator oder ähnliches verwenden als Ninja)
Ryan Pavlik
2
Update: Unter Windows 10 wird dies als Developer Command Prompt bezeichnet
Mattijs
2
Sehr seltsame Erklärung: 1: Es heißt nicht VS Studio-Eingabeaufforderung 2: "navigieren", meinst du mit dem Befehl "cd"? 3: Du meinst, cmake-gui ausführen? Wie Sie in Schritt 5 sagen, um auf eine Schaltfläche zu "klicken" 4: Weiter ?? du meinst ausfüllen? 5: In der Dropdown-Box im Konfigurationsfenster kann ich den VS-Compiler auswählen, aber die C & C ++ - Compiler sind immer noch unbekannt ...
DrumM
1
Übrigens, geben Sie einfach search cmake ein und Sie finden die cmake-gui
DrumM
31

Ich habe in der Datei CMakeError.log nach einem Fehler gesucht cannot run 'rc.exe'

Ich habe diese Antwort gesucht und gefunden , um RC.Exe und RcDll.Dll aus dem Microsoft SDKs-Bin in den VC-Bin zu kopieren, und dann hat CMake funktioniert.


Bearbeiten: Die beste Antwort auf eine andere Frage deutet darauf hin, dass es sich um ein PATH-Problem handelt. Es könnte also ausreichen, um sicherzustellen, dass sich der Microsoft SDK-Bin in Ihrem PATH befindet.

Carl Walsh
quelle
15

Stellen Sie sicher, dass Sie im Generator die richtige Version von Visual Studio verwenden. Ich habe Visual Studio 15 bei der Installation von Visual Studio 14 falsch ausgewählt.

Hrushikesh Kulkarni
quelle
3
Das war auch mein Problem. Es ist verwirrend, weil Visual Studios 2015 Version 14 ist!
Paul Wintz
4
Beachten Sie, dass Sie möglicherweise Ihren Cache löschen müssen, um die Version von VS zu ändern. Klicken Sie dazu auf Datei> Cache löschen.
Paul Wintz
Dies half ... Versionierung von seiner besten Seite!
Noel Widmer
arrrrg, @PaulWintz, danke für diese Erinnerung. Ich glaube, in meinem Fall habe ich cmake mit einem sauberen cmake-Cache ausgeführt, aber während VisualStudio darauf wartete, dass ich den Computer neu starte, um ein VS-Update abzuschließen, hat cmake die schlechte Situation geschickt zwischengespeichert.
Orion Elenzil
13

Diejenigen, die in Visual Studio 2017 darüber stolpern: Es gibt eine Funktion im Zusammenhang mit CMake, die zusammen mit den entsprechenden Compiler-Toolsets ausgewählt und installiert werden muss. Siehe den Screenshot unten.

Visaul C ++ - Tools für CMake müssen installiert sein

Vadim Berman
quelle
Was ist mit Version 2015? Ich konnte dieses Kontrollkästchen in der Installation von 2015 nicht finden. Eine Lösung könnte sein, auf 2017 zu aktualisieren ...
DrumM
1
@ DrumM, dies ist speziell für Visual Studio 2017. Ich glaube nicht, dass die Funktion in VS 2015 existiert.
Vadim Berman
Sind Sie sicher, dass dies notwendig ist? Ist es nicht nur für die Verwendung von CMake in Visual Studio?
Peter Mortensen
@ PeterMortensen: Es hat das Problem für mich gelöst. Wieder Visual Studio 2017.
Vadim Berman
9

Wenn keine der oben genannten Lösungen funktioniert hat, halten Sie an und führen Sie eine Überprüfung der Gesundheit durch.

Ich wurde mit der falschen -G <config>Zeichenfolge verbrannt und es gab mir diesen irreführenden Fehler.

Führen Sie zunächst die VS-Eingabeaufforderung und nicht die reguläre Eingabeaufforderung aus. Sie finden es unter Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015Hier werden alle korrekten Pfade zu VS-Tools usw. eingerichtet.

Nun sehen Sie, welche Generatoren von cmake erhältlich 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 mit dem hinzugefügten [Bogen].

mkdir _build cd _build cmake .. -G "Visual Studio 15 Win64"

Das Ausführen von cmake in einem Unterverzeichnis erleichtert das Reinigen, da Sie einfach alles in diesem Verzeichnis löschen können.

Ich habe ein Upgrade auf Visual Studio 15 durchgeführt, aber nicht darauf geachtet und versucht, für 2012 zu generieren.

TrophyGeek
quelle
7

Für mich habe ich die CMakeError.logDatei überprüft und festgestellt:

[...] Fehler MSB8036: Das Windows SDK Version 8.1 wurde nicht gefunden. Installieren Sie die erforderliche Version von Windows SDK oder ändern Sie die SDK-Version auf den Projekteigenschaftsseiten oder indem Sie mit der rechten Maustaste auf die Lösung klicken und "Lösung neu ausrichten" auswählen.

Dies 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, und jetzt ist CMake glücklich wie eine Muschel.

Chowey
quelle
4

Menü → Visual Studio 2015 → MSBuild-Eingabeaufforderung für Visual Studio 2015. Dann kann CMake finden cl.exe.

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 finden rc.exe.

CD auf den Weg von CMakeLists.txtund tun:

md .build
cd .build
cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release
cmake --build .

Der Parameter after -Gsollte von CMake abgerufen werden. Verwenden Sie --help; Sie können den Generator haben oder nicht.

Alen Wesker
quelle
Wenn Sie msvc 2015 und 2017 installiert haben und versuchen, mit msvc 2015 zu erstellen, wird das 10.0 SDK automatisch erkannt, wenn die vs2015-Eingabeaufforderung ausgeführt wird. Sie können die SDK-Version angeben, indem Sie die Eingabeaufforderung "VS2015 x64 Native Tools" ändern, um das 8.1-SDK zu erzwingen, indem Sie am Ende des Befehlszeilenparameters Folgendes hinzufügen. % comspec% / k C: \ Programme (x86) \ msdev2015 \ VC \ vcvarsall.bat amd64 8.1
kalmiya
Muss ich die MSBuild-Eingabeaufforderung für Visual Studio 2015 separat installieren? Ich habe msvc 2017 installiert, aber die Eingabeaufforderung für Visual Studio ist nicht vorhanden.
Meen
2

Ich bin auf dasselbe Problem gestoßen und habe es behoben, indem ich die Visual Studio-Installation neu gestartet und die folgende Option aktiviert habe:

Windows and Web Development/ Universal Windows App Development Tools/Windows 10 SDK

Es enthält die in den meisten Anwendungen verwendeten Standard-C ++ - Header und muss daher häufig auch installiert werden.

Philippe Ferdinand
quelle
2

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 der Visual Studio 2015 Professional IDE erstellt wurden, wurden erfolgreich kompiliert, CMake konnte jedoch 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 aktualisiert und jetzt ist das Problem behoben.

jpo38
quelle
1

Wenn Sie mit Visual Studio 2017 arbeiten, benötigen Sie mindestens CMake 3.8!

Lars Bilke
quelle
1

Ich hatte ein ähnliches Problem mit dem über CMake generierten Visual Studio 2017-Projekt. Einige der Pakete fehlten bei der Installation von Visual Studio in der Desktop-Entwicklung mit C ++. Siehe Schnappschuss:

Visual Studio 2017-Pakete:

Visual Studio2017-Pakete

Aktualisieren Sie CMake außerdem auf die neueste Version.

vinodsaluja
quelle
0

In meinem Fall gab es einen Umgebungsvariablensatz, der den Grund für diesen Fehler darstellte. Das Problem wurde behoben, nachdem cxx_flags aus den Umgebungsvariablen gelöscht wurden.

Starger
quelle
0

Ich habe dieses Problem mit CMake 3.12.1 nach einem Update von Visual Studio 2017 erhalten. Ich habe CMake einfach erneut ausgeführt und es hat funktioniert.

0xF
quelle
0

In meinem Fall konnte ich sehen, CMakeError.logdass CMake das Windows SDK ( MSB8003: Could not find WindowsSDKDir variable from the registry) nicht finden konnte .

Die Version kann in der Befehlszeile beim ersten CMake-Lauf angegeben werden mit:

-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=

Nachdem ich das eingestellt hatte, bin ich weiter gekommen, aber ich habe später weitere Probleme festgestellt (also gehe ich davon aus, dass meine Umgebung irgendwie durcheinander ist), aber vielleicht hilft es jemandem bei diesem Problem.

Zitrax
quelle
0

Ein paar Tipps:

  • Versuchen Sie, den Pfad manuell festzulegen, indem Sie "Erweitert" aktivieren und CMAKE_LINKER und CMAKE_MAKE_PROGRAM ändern
  • Cache löschen - im CMake mit GUI gehen Sie zu: Datei → Cache löschen.

Mein Problem war eine Kombination der zuvor genannten: Ich habe die Compiler-Version auf 15 statt 14 gesetzt und musste nach Korrektur den Cache löschen.

Ich habe auch die Visual Studio-Eingabeaufforderung als Administrator gestartet und von dort aus die cmake-gui.exe ausgeführt

Dann funktionierte alles so, wie es sollte.

Rarach
quelle
0

In meinem Fall war das Problem, dass das übergeordnete Projekt, das googletest über enthält

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 Element festgelegt ist.

Ich habe das Problem mit gelöst

PROJECT( projname CXX C)

in meiner Hauptdatei CMakeLists.txt.

Mojovski
quelle
0

Keine der vorherigen Lösungen hat bei mir funktioniert. Ich habe jedoch festgestellt, dass das auf meinem Computer erstellte Verzeichnis für Visual Studio 14 war, obwohl ich Visual Studio Version 15 installiert habe (nicht zu verwechseln mit Visual Studio 2015).

Als ich Visual Studio 14 beim Drücken der Konfigurationstaste angegeben habe, hat es funktioniert.

Gamaliel
quelle
Die Versionsnummerierung für Visual Studio ist nur ... ungerade. Visual Studio 14 ist in Wirklichkeit Visual Studio 2015, es gibt kein Visual Studio 2014. Siehe Trophygeeks Antwort stackoverflow.com/a/40332976/1319284
kutschkem
0

Ich habe diese Lösung bei Stackoverflow gefunden und arbeite für mich, obwohl ich nicht für andere Lösungen arbeite, wenn Sie ein Windows 10-Betriebssystem haben. Die folgenden Schritte beheben das Problem:

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 Dateien, die Sie kopiert haben, ein.

das ist alles was ich hoffe es ist hilfreich ...

kluger Tiger
quelle
0

Suchen Sie in der Datei Cmakelists.txt nach ARM, wenn Sie C ++ für ARM installieren und vcvarsall.bat für den Ordner ARM bin verwenden möchten.

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 Stelle setzen, an der sich die enable_language (C) befindet. Vermeiden Sie die Kompilierung von Android ARM-Prozessoren.

Dealazer
quelle
0

Behebung durch Hinzufügen der fehlenden Komponente Ändern-> Weiter Hinzufügen wie folgt Fix

ABDULRAHMAN ALKHAMEES
quelle
Eine Nur-Link-Antwort wird nicht empfohlen.
Ṃųỻịgǻňạcểơửṩ
0

Ich hatte ein ähnliches Problem: Die Visual C ++ - Generatoren waren beim Ausführen nicht einmal auf der Liste cmake --help.

Ich lief where cmakein der Konsole und stellte fest, dass cygwin auch eine eigene cmake.exe- Datei bereitstellt , die verwendet wurde. Das Ändern der Reihenfolge der Verzeichnisse in PATH hat das Problem behoben.

stgatilov
quelle
0

Überprüfen von CMakeErrors.log in CMakeFiles zurückgegeben:

C: \ Programme (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V140 \ Platforms \ x64 \ PlatformToolsets \ v140_xp \ Toolset.targets (36,5): Warnung MSB8003: WindowsSdkDir_71A-Variable konnte nicht in der Registrierung gefunden werden. TargetFrameworkVersion oder PlatformToolset sind möglicherweise auf eine ungültige Versionsnummer festgelegt.

Der Fehler bedeutet, dass die Build-Tools für XP (v140_xp) nicht installiert sind. Um dies zu beheben, habe ich die richtige Funktion im Visual Studio 2019-Installationsprogramm auf der Registerkarte "Einzelkomponenten" installiert:

Geben Sie hier die Bildbeschreibung ein

Nathan Moinvaziri
quelle
0

Ich hatte dieses Problem mit der CMake-Benutzeroberfläche und der VS 21019 Community Edition. Ich glaube, ich habe CMake möglicherweise vor Visual Studio installiert - sicherlich nach der Aktualisierung von CMake 3.15.2 auf 3.15.3 ist das Problem behoben.

Mike Pelton
quelle
0

Überprüfen Sie den Namensordner zu lange oder nicht.

user1633912
quelle
-3

Weil CMake Ihren Visual Studio-Compiler nicht finden kann. Starten Sie jedes Projekt, das die erforderlichen Compiler herunterlädt, und CMake muss es dann finden können.

Kushal
quelle