it-swarm.com.de

CMake-Fehler in CMakeLists.txt: 30 (Projekt): Es wurde kein CMAKE_C_COMPILER gefunden

Ich versuche, eine Visual Studio-Lösung mit CMake zu erstellen, um die neueste Version von aseprite zu kompilieren. CMake gibt mir weiterhin Folgendes:

No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.

Ich habe bereits GCC heruntergeladen und verwende Visual Studio 2015 .

Ich folge diesem Tutorial:

https://github.com/aseprite/aseprite/blob/master/INSTALL.md

70
Caio Fontes

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!

bedeutet nur, dass CMake Ihren C/CXX-Compiler nicht finden konnte, um ein einfaches Testprogramm zu kompilieren (eines der ersten Dinge, die CMake versucht, während es Ihre Build-Umgebung erkennt).

Die Schritte, um Ihr Problem zu finden, 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 konnten einmal jedes andere Programm (direkt ohne CMake) kompilieren
  • Sie haben die neueste CMake-Version
  • Sie haben Zugriffsrechte auf das Laufwerk, auf dem CMake Ihre Build-Umgebung erstellen soll
  • Sie haben ein sauberes Build-Verzeichnis (weil CMake die Dinge aus dem letzten Versuch zwischenspeichert), z. 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 Befehls-Shell auf Ihr neu erstelltes Binärausgabeverzeichnis verweist.

Allgemeine Dinge, die Sie probieren können/sollten

  1. Kann CMake einen/Ihren Standard-Compiler finden und ausführen? Laufen ohne einen Generator zu geben

    > cmake ..
    -- Building for: Visual Studio 14 2015
    ...
    

    Perfekt, wenn der zu verwendende Generator korrekt ermittelt wurde - wie hier Visual Studio 14 2015

  2. Was ist eigentlich gescheitert?

    Suchen Sie im vorherigen Build-Ausgabeverzeichnis unter CMakeFiles\CMakeError.log Nach Fehlermeldungen, die für Sie sinnvoll sind, oder versuchen Sie, das unter CMakeFiles\[Version]\CompilerIdC | CompilerIdCXX generierte Testprojekt direkt von der zu öffnen/kompilieren Befehlszeile (wie im Fehlerprotokoll zu finden).

CMake kann Visual Studio nicht finden

  1. Versuchen Sie, die richtige Generatorversion auszuwählen:

    > cmake --help
    > cmake -G "Visual Studio 14 2015" ..
    
  2. Wenn dies nicht hilft, versuchen Sie zunächst, 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üpfung Developer Command Prompt for VS2015 in Ihrem Windows-Startmenü unter All Programs/Visual Studio 2015/Visual Studio Tools (Vielen Dank an @ Antwane für den Hinweis).

Hintergrund : CMake unterstützt alle Visual Studio-Versionen und -Funktionen (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate usw.). Um den Speicherort des Compilers zu bestimmen, wird eine Kombination aus der Suche in der Registrierung (z. B. unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir), Den Systemumgebungsvariablen und - falls sich keiner der anderen etwas einfallen ließ - dem Aufruf des Compilers verwendet.

CMake kann GCC (MinGW/MSys) nicht finden

  1. Sie starten die MSys bash -Shell mit msys.bat Und versuchen einfach, gcc direkt aufzurufen.

    $ gcc
    gcc.exe: fatal error: no input files
    compilation terminated.
    

    Hier hat es gcc gefunden 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 Pfad Ihres Compilers hinzuzufügen (siehe So setzen Sie die Umgebungsvariable PATH im CMake-Skript?) und Versuch es noch einmal.

  2. Wenn es immer noch nicht funktioniert, versuchen Sie, den Compilerpfad CXX 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 Angeben eines neuen GCC-Pfads für CMake

    Hinweis : Wenn Sie den Generator "MinGW Makefiles" verwenden, müssen Sie das mit MinGW gelieferte Programm mingw32-make Verwenden

  3. 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 Voraussetzungen oben).

    Andernfalls besteht der letzte Ausweg von CMake darin, keine Compilersuche selbst durchzuführen und die internen Variablen von CMake direkt über festzulegen

    $ cmake -DCMAKE_C_COMPILER=/c/MinGW/bin/gcc.exe -DCMAKE_CXX_COMPILER=/c/MinGW/bin/g++.exe ..
    

    Weitere Informationen finden Sie unter Cmake erkennt -D CMAKE_CXX_COMPILER = g ++ nicht an und Cmake-Fehler beim Festlegen des Compilers

    Alternativ können diese Variablen auch über cmake-gui.exe Unter Windows gesetzt werden. Siehe Cmake kann 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. Außerdem werden Präfixe erkannt (wenn cross-compiling ) und versucht, sie zu allen Binutils der GNU= Compiler-Toolchain (ar, ranlib, strip, ld, nm, objdump und objcopy).

80
Florian

Dieser Fehler ist auch bei der Arbeit mit CMake aufgetreten:

No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.

Das Feld "Warnung" im MSDN-Bibliotheksartikel Visual C++ in Visual Studio 2015 gab mir die Hilfe, die ich brauchte.

In Visual Studio 2015 ist C++ nicht standardmäßig installiert. Beim Erstellen eines neuen C++ - Projekts werden Sie daher aufgefordert, die erforderlichen C++ - Komponenten herunterzuladen.

12

Dies ist mir passiert, nachdem ich Visual Studio 15 2017 installiert habe.

Der C++ - Compiler für Visual Studio 14 2015 war nicht das Problem. Es schien ein Problem mit dem Windows 10 SDK zu sein.

Das Hinzufügen der Windows 10-SDKs zu Visual Studio 14 2015 hat das Problem für mich gelöst.

Siehe beiliegender Screenshot.

 Enter image description here

10
Wim Vanhenden

Für Ubuntu installieren Sie bitte die folgenden Dinge:

Sudo apt-get update && Sudo apt-get install build-essential
5
Vishnu

Ich bin auf dieses Problem gestoßen, als ich libgit2-0.23.4 erstellt habe. Für mich bestand das Problem darin, dass der C++ - Compiler und verwandte Pakete nicht mit VS2015 installiert wurden. Daher fehlte "C:\Programme (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" Datei nicht vorhanden und Cmake den Compiler finden können.

Ich habe versucht, ein C++ - Projekt manuell in der Visual Studio 2015-Benutzeroberfläche ( C:\Programme (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe ) Zu erstellen. Beim Erstellen des Projekts habe ich hat eine Aufforderung zum Herunterladen der C++ - und zugehörigen Pakete erhalten. 

Nachdem ich die erforderlichen Pakete heruntergeladen hatte, konnte ich sehen, dass vcvarsall.bat & Cmake den Compiler finden konnte und mit folgendem Protokoll erfolgreich ausgeführt wurde:

C:\Users\aksmahaj\Documents\MyLab\fritzing\libgit2\build64>cmake ..
-- Building for: Visual Studio 14 2015
-- The C compiler identification is MSVC 19.0.24210.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual        
Studio 14.0/VC/bin/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual  
Studio 14.0/VC/bin/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE)
-- Could NOT find ZLIB (missing:  ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-- zlib was not found; using bundled 3rd-party sources.
-- LIBSSH2 not found. Set CMAKE_PREFIX_PATH if it is installed outside of 
the default search path.
-- Looking for futimens
-- Looking for futimens - not found
-- Looking for qsort_r
-- Looking for qsort_r - not found
-- Looking for qsort_s
-- Looking for qsort_s - found
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - not found
-- Found PythonInterp: C:/csvn/Python25/python.exe (found version "2.7.1")
-- Configuring done
-- Generating done
-- Build files have been written to:    
C:/Users/aksmahaj/Documents/MyLab/fritzing/libgit2/build64
4
Aksh1801

Ich hatte die gleichen Fehler mit CMake. In meinem Fall habe ich im ersten CMake-Dialogfeld die falsche Visual Studio-Version verwendet, in der der Visual Studio-Compiler ausgewählt werden muss.

Dann habe ich es in "Visual Studio 11 2012" geändert und alles hat funktioniert. (Ich habe eine Visual Studio Ultimate 2012-Version auf meinem PC). Versuchen Sie im Allgemeinen, eine ältere Version der Visual Studio-Version im ersten CMake-Konfigurationsdialogfeld einzugeben.

4
TSac

Für mich ist dieses Problem unter Windows verschwunden, als ich mein Projekt in ein flacheres übergeordnetes Verzeichnis verschoben habe, d. H.

C:\Users\spenc\Desktop\MyProjectDirectory

anstatt

C:\Users\spenc\Desktop\...\MyProjectDirectory.

Ich denke, die Ursache des Problems war, dass MSBuild eine Längenbeschränkung für die Dateipfade hat auf 260 Zeichen. Dies führt dazu, dass der grundlegende Compilertest, den CMake ausführt, um ein Projekt mit dem Namen CompilerIdCXX.vcxproj zu erstellen, mit dem Fehler fehlschlägt:

C1083: Cannot open source file: 'CMakeCXXCompilerId.cpp'

weil die Länge des Dateipfads z.

C:\Users\spenc\Desktop\...\MyProjectDirectory\build\CMakeFiles\...\CMakeCXXCompilerId.cpp

überschreitet die MAX_PATH-Einschränkung.

CMake schließt dann, dass es keinen CXX-Compiler gibt.

4
spenceryue

Stellen Sie sicher, dass Sie die richtige Version von Visual Studio ausgewählt haben. Dies ist schwieriger als es scheint, da es sich bei Visual Studio 2015 eigentlich um Visual Studio 14 handelt und ähnlich ist Visual Studio 2012 auch Visual Studio 11. Ich hatte falsch ausgewählt, dass Visual Studio 15 tatsächlich Visual Studio 2017 ist.

2
Aryaman Gupta

Dies funktioniert für mich in Ubuntu 17.10 (Artful Aardvark):

apt-get update
apt-get install build-essential
1
purval_patel

Für den Fall, dass es in Zukunft jedem wie mir hilft:

Ich hatte dieses Problem nun seit 24 Stunden auf 3 verschiedenen 64-Bit-Computern (Win7, Windows 8.1 VM und WIn 8.1 Laptop) - während ich versuche, WebKit mit VS 2017 zu erstellen.

Das einfache Problem hierbei ist, dass der VC++ - Compiler (d. H. Cl.exe und die davon abhängigen DLLs) für CMake nicht sichtbar sind. Einfach. Indem Sie die VC++ - Ordner, die diese Binärdateien enthalten, für CMake und Ihren Arbeitsbefehl Prompt sichtbar machen (wenn Sie Cmake von einem Befehl Prompt ausführen), können Sie voila! (Zusätzlich zu den wichtigsten Punkten, die von anderen oben angesprochen wurden)

Nach allen möglichen Korrekturen - wie in diesen vielen Foren bekanntgegeben - stellte ich jedoch fest, dass es EINFACH darum ging, sicherzustellen, dass der Inhalt der PATH-Variablen nicht mit mehreren Visual Studio BIN-Pfaden usw. überladen ist. und zeigt stattdessen auf:

a) Der Speicherort Ihres Compilers (dh cl.exe für Ihre bevorzugte Version von Visual Studio), der in meinem Fall (64-Bit-Plattform und Entwicklung auf einem 64-Bit-Host): C:\Programme (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\Hostx64\x64

b) und zusätzlich den Ordner, der ein abhängiges DLL enthält (das von cl.exe abhängig ist): api-ms-win-crt-runtime-l1-1-0.dll - was auf meiner Maschine ist:

C:\Programme (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Remote Debugger\x64

Diese beiden Verzeichnisse werden zu einer vereinfachten und benutzerdefinierten Systempfadvariablen hinzugefügt (arbeitet unter einer Eingabeaufforderung des Administrators mit Administratorberechtigung). Mein "Es wurde kein CMAKE_C_COMPILER gefunden" und "Es wurde kein CMAKE_CXX_COMPILER gefunden". Fehler.

Hoffe es hilft jemandem.

1
GreatCentralSun

Keine der Lösungen hier löst mein Problem - nur wenn ich Windows Update für die universelle C-Laufzeitumgebung installiere.

Jetzt funktioniert CMake und es hängt kein Link mehr von Visual Studio.

Update für Universal C Runtime unter Windows

1
Meir Gerenstadt

Sie können auch sicherstellen, dass Sie der Sudo-Benutzer sind und auf das Verzeichnis, in dem Sie arbeiten, READ/WRITE-Zugriff haben. Ich hatte ein ähnliches Problem unter OS X und es wurde behoben, indem ich in den Sudo-Modus ging.

1

Ich erhalte genau den gemeldeten Fehler, wenn ccache aktiviert ist, wenn Sie CMakes Xcode-Generator verwenden. Durch das Deaktivieren des Caches wurde das Problem für mich behoben. Im Folgenden stelle ich einen Fix/Check vor, der für MacOS funktioniert, aber auf anderen Plattformen ähnlich funktionieren sollte.

Offensichtlich ist es möglich, den Xcode-Generator von CMake (und andere) auch in Kombination mit ccache zu verwenden, wie es hier beschrieben wird. Aber ich habe es selbst nie ausprobiert.

# 1) To check if ccache is enabled:
echo $CC
echo $CXX
# This prints something like the following: 
#     ccache clang -Qunused-arguments -fcolor-diagnostics. 
# CC or CXX are typically set in the `.bashrc` or `.zshrc` file.

# 2) To disable ccache, use the following:
CC=clang
CXX=clang++

# 3) Then regenerate the cmake project
cmake -G Xcode <path/to/CMakeLists.txt>
1
normanius

Ich hatte das gleiche Problem mit cmake-gui (No CMAKE_CXX_COMPILER could be found.), Während CMake über die Befehlszeile ausgeführt wurde. Nach dem manuellen Hinzufügen der Einträge

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin

für die Umgebungsvariable PATH hat es bei mir funktioniert.

0
helmken

Ich habe Visual Studio 2015 Update 2 auf Visual Studio 2015 Update 3 aktualisiert und das Problem gelöst.

0
TripleS

Für mich funktionierte es, die Developer-Eingabeaufforderung zu verwenden, die mit Visual Studio geliefert wird. Dann cd in your/jcef/dir und dann cmake -G "Visual Studio 14 Win64" .. ausführen.

0
Marc Dirven

Ich hatte das gleiche Problem.

Ich habe versucht, dlib auf meinem Computer zu installieren, und es gab mir diesen Fehler ... Das Tutorial, das in der Frage erwähnt wurde, führt dazu, dass Visual Studio 2017 heruntergeladen wird

Über diesen Stackoverflow-Thread kann man VS 2015 installieren: So laden Sie Visual Studio Community Edition 2015 herunter (nicht 2017)

0
Aprajita Verma

Schauen Sie in die Cmakelists.txt, wenn Sie ARM finden, müssen Sie C++ für ARM 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 die Probleme

Es wurde kein CMAKE_C_COMPILER gefunden.

Es wurde kein CMAKE_CXX_COMPILER gefunden.

Könnte verschwinden, wenn Sie nicht c-Compiler wie clang angeben, und möglicherweise funktioniert die Installation von clang auf andere Weise.

Sie können optional in cmakelists.txt beide mit # vor enable_language entfernen, wenn Sie nicht für ARM kompilieren.

0
Dealazer

Ich weiß, dass es sich bei dieser Frage um Visual Studio 2015 handelt. Ich habe dieses Problem mit Visual Studio 2017 konfrontiert. Als ich auf Google gesucht habe, bin ich auf diese Seite gelangt. Nachdem ich mir die ersten 2,3 Antworten angesehen hatte, wurde mir klar, dass dies das Problem bei der Installation von vc ++ ist. Durch die Installation des Workloads "Desktop-Entwicklung mit c ++" wurde das Problem behoben.

 Desktop development with c++ 

0
Asad