it-swarm.com.de

CMake findet keinen Visual C++ - Compiler

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?

101
Asher

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.

113
Asher

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

  1. Öffnen Sie das Eingabeaufforderungstool für Visual Studio (als Administrator).
  2. Navigieren Sie zu der Stelle, an der Sie die ausführbare Datei von CMake haben
  3. Führen Sie Cmake.exe aus
  4. Gehen Sie wie üblich 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.

29
Ochi Fortune

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.

28
Carl Walsh

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. 

14

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

 Visaul C++ tools for CMake must be installed

9
Vadim Berman

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.

6
chowey

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. 

6
TrophyGeek

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.

4
Alen Wesker

Als Alternative zu der akzeptierten Antwort können Sie C++ direkt installieren wie hier beschrieben

1
Jthorpe

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

1
Lars Bilke

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.

1
jpo38

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.

0
mojovski

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.

0
Dealazer

Ein paar Tipps:

  • Versuchen Sie, den Pfad manuell festzulegen, indem Sie 'advanced' markieren 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 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.

0
Rarach

Gelöst durch Hinzufügen der fehlenden Komponente Ändern-> weiter wie folgt hinzufügen Fix

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.

0

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

0
alanwsx

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.

0
Starger

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.

0
Gamaliel

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.

0
0xF

Ich hatte ein ähnliches Problem mit dem durch CMake erzeugten Visual Studio 2017-Projekt. Bei der Installation von Visual Studio in der Desktop-Entwicklung mit C++ fehlten einige Pakete. Siehe Schnappschuss:

Visual Studio 2017-Pakete:

 Visual Studio2017 Packages

Aktualisieren Sie CMake auch auf die neueste Version.

0
vinodsaluja

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.

0
Zitrax

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 ...

0
clever tiger

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:

enter image description here

0

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.

0
stgatilov