Errore CMake in CMakeLists.txt: 30 (progetto): non è stato possibile trovare CMAKE_C_COMPILER


105

Sto provando a creare una soluzione Visual Studio con CMake per compilare l'ultima versione di aseprite e CMake continua a darmi il:

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

Ho già scaricato GCC e utilizzo Visual Studio 2015 .

Sto seguendo questo tutorial:

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


Puoi configurare il progetto per Visual Studio con il suo compilatore o per Makefile con gcc. Che metodo hai provato?
Tsyvarev

Qual è il comando cmake che stai immettendo?
bames53

Stai usando l'ultima versione di CMake? Che generatore hai usato? Hai eseguito i comandi dal prompt dei comandi di Visual Studio 2015 (quindi ha le variabili di ambiente del compilatore impostate)?
drescherjm

1
@ bames53 Volevo solo aggiungere alle righe di comando corrispondenti per @Caio Fontes da provare: cmake .. -G "Visual Studio 14 2015"o cmake .. -G "MSYS Makefiles"(se gccsignifica MinGW). E ho visto spesso queste domande (come qui , qui o qui ) e penso che ci manchi una risposta combinata / tutorial su SO.
Florian

Risposte:


97

Quei messaggi di errore

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

o

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!

Significa solo che CMake non è stato in grado di trovare il compilatore C / CXX per compilare un semplice programma di test (una delle prime cose che CMake prova durante il rilevamento dell'ambiente di compilazione).

I passaggi per individuare il problema dipendono dall'ambiente di compilazione che si desidera generare. I seguenti tutorial sono una raccolta di risposte qui su Stack Overflow e alcune delle mie esperienze con CMake su Microsoft Windows 7/8/10 e Ubuntu 14.04.

Presupposti

  • Hai installato il compilatore / IDE ed è stato in grado di compilare una volta qualsiasi altro programma (direttamente senza CMake)
  • Hai l'ultima versione di CMake
  • Hai i diritti di accesso sull'unità in cui desideri che CMake generi il tuo ambiente di compilazione
  • Hai una directory di compilazione pulita (perché CMake memorizza nella cache le cose dall'ultimo tentativo) ad es. Come sottodirectory dell'albero dei sorgenti

    Windows cmd.exe

    > rmdir /s /q VS2015
    > mkdir VS2015
    > cd VS2015

    Bash shell

    $ rm -rf MSYS
    $ mkdir MSYS
    $ cd MSYS

    e assicurati che la shell dei comandi punti alla directory di output binario appena creata.

Cose generali che puoi / dovresti provare

  1. CMake è in grado di trovare ed eseguire con qualsiasi / il tuo compilatore predefinito? Corri senza dare un generatore

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

    Perfetto se ha determinato correttamente il generatore da utilizzare, come qui Visual Studio 14 2015

  2. Che cosa ha effettivamente fallito?

    Nella directory di output della build precedente, cerca CMakeFiles\CMakeError.logqualsiasi messaggio di errore che abbia senso per te o prova ad aprire / compilare il progetto di test generato in CMakeFiles\[Version]\CompilerIdC| CompilerIdCXXdirettamente dalla riga di comando (come si trova nel registro degli errori).

CMake non riesce a trovare Visual Studio

  1. Prova a selezionare la versione del generatore corretta :

    > cmake --help
    > cmake -G "Visual Studio 14 2015" ..
  2. Se ciò non aiuta, prova prima a impostare le variabili di ambiente di Visual Studio (il percorso potrebbe variare):

    > "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
    > cmake ..

    o usa la Developer Command Prompt for VS2015scorciatoia nel menu Start di Windows in All Programs/ Visual Studio 2015/ Visual Studio Tools(grazie a @Antwane per il suggerimento).

Background : CMake supporta tutte le versioni e le versioni di Visual Studio (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate, ecc.). Per determinare la posizione del compilatore utilizza una combinazione di ricerca nel registro (ad esempio in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir), variabili di ambiente di sistema e, se nessuno degli altri ha trovato qualcosa, prova semplicemente a chiamare il compilatore.

CMake non riesce a trovare GCC (MinGW / MSys)

  1. Avvii la bashshell MSys con msys.bate provi a chiamare direttamentegcc

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

    Qui ha trovato gcce si lamenta che non gli ho fornito alcun parametro con cui lavorare.

    Quindi dovrebbe funzionare quanto segue:

    $ cmake -G "MSYS Makefiles" ..
    -- The CXX compiler identification is GNU 4.8.1
    ...
    $ make

    Se GCC non è stato trovato, chiama export PATH=...per aggiungere il percorso del tuo compilatore (vedi Come impostare la variabile d'ambiente PATH nello script CMake? ) E riprova.

  2. Se ancora non funziona, prova a impostare CXXdirettamente il percorso del compilatore esportandolo (il percorso può variare)

    $ 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

    Per maggiori dettagli, vedi Come specificare un nuovo percorso GCC per CMake

    Nota : quando si utilizza il generatore "MinGW Makefiles" è necessario utilizzare il mingw32-makeprogramma distribuito con MinGW

  3. Continua a non funzionare? Quello è strano. Assicurati che il compilatore sia presente e disponga dei diritti eseguibili (vedi anche il capitolo precondizioni sopra).

    Altrimenti l'ultima risorsa di CMake è non provare alcuna ricerca del compilatore e impostare le variabili interne di CMake direttamente da

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

    Per maggiori dettagli vedere Cmake non rispetta -D CMAKE_CXX_COMPILER = g ++ e Cmake error setting compiler

    In alternativa, queste variabili possono essere impostate anche tramite cmake-gui.exesu Windows. Vedere Cmake non riesce a trovare il compilatore

Sfondo : molto simile a Visual Studio. CMake supporta tutti i tipi di versioni di GCC. Cerca nelle variabili d'ambiente (CC, CXX, ecc.) O semplicemente prova a chiamare il compilatore. Inoltre rileverà eventuali prefissi (quando cross-compilazione ) e tenta di aggiungere a tutti i binutils toolchain del compilatore GNU ( ar, ranlib, strip, ld, nm, objdump, e objcopy).


1
Proprio come avvertimento, alcuni dei collegamenti ai documenti di cmake puntano a una versione molto vecchia di CMake, ricorda di utilizzare il selettore di versione per abbinare la versione che hai sul tuo computer (ad esempio, se non vedi una piattaforma più recente elencata che hai bisogno).
jrh

42

Per Ubuntu, installa le seguenti cose:

sudo apt-get update && sudo apt-get install build-essential

21

Questo mi è successo dopo aver installato Visual Studio 15 2017.

Il compilatore C ++ per Visual Studio 14 2015 non era il problema. Sembrava essere un problema con Windows 10 SDK.

L'aggiunta di Windows 10 SDK a Visual Studio 14 2015 ha risolto il problema per me.

Vedi screenshot allegato.

Inserisci qui la descrizione dell'immagine


13

Ho anche riscontrato questo errore durante il lavoro con CMake:

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

La casella di "avviso" nell'articolo della libreria MSDN Visual C ++ in Visual Studio 2015 mi ha fornito l'aiuto di cui avevo bisogno.

Visual Studio 2015 non viene fornito con C ++ installato per impostazione predefinita. Quindi, la creazione di un nuovo progetto C ++ ti chiederà di scaricare i componenti C ++ necessari.



5

Mi sono imbattuto in questo problema durante la creazione di libgit2-0.23.4. Per me il problema era che il compilatore C ++ ei relativi pacchetti non erano installati con VS2015, quindi il file "C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ vcvarsall.bat" mancava e Cmake non era in grado di trovare il compilatore.

Ho provato a creare manualmente un progetto C ++ nella GUI di Visual Studio 2015 ( C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe ) e durante la creazione del progetto, ho ricevuto una richiesta per scaricare il C ++ e pacchetti correlati.

Dopo aver scaricato i pacchetti richiesti, ho potuto vedere vcvarsall.bat e Cmake sono stati in grado di trovare il compilatore ed eseguito correttamente con il seguente registro:

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

1
Questo ha funzionato per me. La creazione manuale di un progetto C ++ per installare i pacchetti necessari ha funzionato.
Melaz

5

Ho avuto gli stessi errori con CMake. Nel mio caso, ho usato la versione di Visual Studio sbagliata nella finestra di dialogo iniziale di CMake in cui dobbiamo selezionare il compilatore di Visual Studio.

Poi l'ho cambiato in "Visual Studio 11 2012" e le cose hanno funzionato. (Ho la versione di Visual Studio Ultimate 2012 sul mio PC). In generale, prova a inserire una versione precedente della versione di Visual Studio nella finestra di dialogo di configurazione iniziale di CMake.


4

Per me, questo problema è scomparso su Windows quando ho spostato il mio progetto in una directory principale meno profonda, ad esempio in:

C:\Users\spenc\Desktop\MyProjectDirectory

invece di

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

Penso che la fonte del problema fosse che MSBuild ha una limitazione della lunghezza del percorso del file a 260 caratteri. Ciò fa sì che il test di compilazione di base che CMake esegue per creare un progetto chiamato CompilerIdCXX.vcxprojfallisca con l'errore:

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

perché la lunghezza del percorso del file es

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

supera la restrizione MAX_PATH.

CMake conclude quindi che non esiste un compilatore CXX.


2

Assicurati di aver selezionato la versione corretta di Visual Studio. Questo è più complicato di quanto sembri perché Visual Studio 2015 è in realtà Visual Studio 14, e allo stesso modo Visual Studio 2012 è Visual Studio 11. Avevo selezionato in modo errato Visual Studio 15 che in realtà è Visual Studio 2017, quando ho installato 2015.



1

Puoi anche assicurarti di essere l'utente sudo e di avere accesso in lettura / scrittura sulla directory su cui stai lavorando. Ho avuto un problema simile su OS X e l'ho risolto semplicemente entrando in modalità sudo.


1

Nel caso in cui aiuti qualcuno come me in futuro:

Ho avuto questo problema per 24 ore, su 3 diverse macchine a 64 bit (Win7, Windows 8.1 VM e laptop Win 8.1), mentre cercavo di creare WebKit con VS 2017.

Il semplice problema qui è che il compilatore VC ++ (cioè cl.exe e le sue DLL dipendenti) non è visibile a CMake. Semplice. Rendendo le cartelle VC ++ contenenti quei binari visibili a CMake e al prompt dei comandi di lavoro (se stai eseguendo Cmake da un prompt dei comandi), voilà! (Oltre ai punti chiave sollevati da altri, sopra)

Ad ogni modo, dopo tutti i tipi di correzioni - come postato su questi numerosi forum - ho scoperto che era SEMPLICEMENTE una questione di garantire che i contenuti della variabile PATH non fossero ingombri di più percorsi BIN di Visual Studio, ecc; e invece, punta a:

a) la posizione del compilatore (cioè cl.exe per la tua versione preferita di Visual Studio), che nel mio caso (indirizzata alla piattaforma a 64 bit e in via di sviluppo su un host a 64 bit) è: C: \ Programmi (x86 ) \ Microsoft Visual Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.15.26726 \ bin \ Hostx64 \ x64

b) e inoltre, la cartella contenente una DLL dipendente chiamata (da cui dipende cl.exe): api-ms-win-crt-runtime-l1-1-0.dll - che sulla mia macchina è:

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

Queste due directory aggiunte a una variabile di percorso di sistema semplificata e PERSONALIZZATA (funzionante con un prompt di comando privilegiato dall'amministratore), hanno eliminato il mio "Impossibile trovare CMAKE_C_COMPILER" e "Impossibile trovare CMAKE_CXX_COMPILER." errori.

Spero che aiuti qualcuno.


1

Ottengo esattamente l'errore segnalato se ccache è abilitato, quando si utilizza il generatore Xcode di CMake . La disabilitazione di ccache ha risolto il problema per me. Di seguito presento una correzione / controllo che funziona per MacOS, ma dovrebbe funzionare in modo simile su altre piattaforme.

Apparentemente, è possibile utilizzare il generatore di Xcode di CMake (e altri) anche in combinazione con ccache, come descritto qui . Ma non l'ho mai provato da solo.

# 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
Sono stato in grado di risolvere lo stesso problema assicurandomi che l'output di "xcode-select -p" punti alla mia installazione di Xcode. Nel mio caso è stato sufficiente installare Xcode ed eseguire "xcode-select -r".
TomTasche

0

Ho aggiornato l'aggiornamento 2 di Visual Studio 2015 all'aggiornamento 3 di Visual Studio 2015 e ha risolto il mio problema.


Questa soluzione è stata richiesta al mio posto di lavoro dopo che hanno inviato un aggiornamento del sistema operativo Windows. Ho utilizzato almeno 2 delle soluzioni in questa pagina per correggere l'errore. L'errore può verificarsi in qualsiasi numero di condizioni, quindi questo è il motivo per cui ci sono molte risposte diverse, ma praticabili.
Natalie Cottrill

0

Ho avuto lo stesso problema con cmake-gui ( No CMAKE_CXX_COMPILER could be found.), mentre l'esecuzione di CMake dalla riga di comando ha funzionato bene. Dopo aver aggiunto manualmente le voci

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

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

alla variabile d'ambiente PATH ha funzionato per me.


0

Per me ha funzionato per utilizzare il prompt dei comandi per gli sviluppatori fornito con Visual Studio e quindi solo cdper your/jcef/dired eseguirecmake -G "Visual Studio 14 Win64" ..


0

Ho avuto lo stesso problema.

Stavo cercando di installare dlib sulla mia macchina e mi ha dato questo errore. Il tutorial menzionato nella domanda porta al download di Visual Studio 2017. Ho risolto il problema disinstallando VS 2017 e installando VS 2015

È possibile installare VS 2015 tramite questo thread di stackoverflow: Come scaricare Visual Studio Community Edition 2015 (non 2017)


0

So che questa domanda riguarda Visual Studio 2015. Ho affrontato questo problema con Visual Studio 2017. Quando ho cercato su Google sono arrivato a questa pagina. Dopo aver esaminato le prime 2,3 risposte, ho capito che questo è il problema con l'installazione di vc ++. L'installazione del carico di lavoro "Sviluppo desktop con c ++" ha risolto il problema.

Sviluppo desktop con c ++


0

Cerca nel Cmakelists.txt se trovi ARM devi installare C ++ per ARM

Sono questi pacchetti:

Piattaforma Windows universale C ++ per ARM64 "Non richiesto"

Compilatori e librerie Visual C ++ per ARM "non necessari"

Compilatori e librerie Visual C ++ per ARM64 "Molto probabilmente necessari"

Required for finding Threads on ARM 
enable_language(C) 
enable_language(CXX)

Poi i problemi

Impossibile trovare CMAKE_C_COMPILER.

Impossibile trovare CMAKE_CXX_COMPILER.

Potrebbe scomparire a meno che non specifichi il compilatore c come clang, e forse l'installazione di clang funzionerà a favore.

Puoi con rimozione opzionale in cmakelists.txt sia con # prima di enable_language se non stai compilando per ARM.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.