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!
solo dire che CMake è stato in grado di trovare il vostro C/CXX compilatore per compilare un semplice programma di test (una delle prime cose che CMake prova mentre rilevamento del tuo ambiente di costruzione).
I passaggi per individuare il problema dipendono dall'ambiente di generazione che si desidera generare. Le seguenti esercitazioni sono una raccolta di risposte qui su StackOverflow e alcune delle mie esperienze personali con CMake su MS Windows 7/8/10 e Ubuntu 14.04.
Presupposti
- È stato installato il compilatore/IDE ed è stato in grado di compilare una volta qualsiasi altro programma (direttamente senza CMake)
- di avere l'ultima CMake version
- Hai diritti di accesso sul disco che si desidera CMake per generare l'ambiente di generazione
Si dispone di una directory di compilazione pulita (poiché CMake memorizza nella cache le cose dall'ultimo tentativo) ad esempio come sotto-directory del vostro albero dei sorgenti
di Windows cmd.exe
> rmdir /s /q VS2015
> mkdir VS2015
> cd VS2015
shell Bash
$ rm -rf MSYS
$ mkdir MSYS
$ cd MSYS
e assicurarsi che i punti di shell di comando nella directory di output binario appena creata .
cose generali si può/dovrebbe provare
è trovare in grado CMake e correre con qualsiasi/il compilatore di default?Eseguire senza dare un generatore
> cmake ..
-- Building for: Visual Studio 14 2015
...
perfetto se correttamente determinato il generatore di utilizzare - come qui Visual Studio 14 2015
Che cosa è stato che in realtà non è riuscita?
Nella directory di generazione build precedente, consultare CMakeFiles\CMakeError.log
per qualsiasi messaggio di errore che abbia senso per voi o provare ad aprire/compilare il progetto di test generato a CMakeFiles\[Version]\CompilerIdC
| CompilerIdCXX
direttamente dalla riga di comando (come si trova nel log degli errori).
CMake non riesce a trovare Visual Studio
provare a selezionare il corretto generator version
> cmake --help
> cmake -G "Visual Studio 14 2015" ..
Se questo non aiuta tenta di impostare le variabili d'ambiente VS primo (il percorso potrebbe variare)
> "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
> cmake ..
o utilizzare la scorciatoia Developer Command Prompt for VS2015
nel menu di avvio di Windows sotto All Programs
/Visual Studio 2015
/Visual Studio Tools
(grazie al @Antwane per il suggerimento)
Sfondo: CMake supporta tutti Studio rilasci e sapori visivi (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate, ...). Per determinare la posizione del compilatore, utilizza una combinazione di ricerca nel registro (ad esempio a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir
), variabili di ambiente di sistema e, se nessuno degli altri ha trovato qualcosa, prova chiaramente a chiamare il compilatore.
CMake non riesce a trovare GCC (MinGW/MSys)
si avvia la shell MSys bash
con msys.bat
e cercano solo di chiamare direttamente gcc
$ gcc
gcc.exe: fatal error: no input files
compilation terminated.
Qui ha trovato gcc
e si lamenta che non ho dato alcun parametro con cui lavorare.
Così il seguente dovrebbe funzionare:
$ cmake -G "MSYS Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
$ make
Se GCC non è stato trovato chiamata export PATH=...
aggiungere la percorso compilatori (vedi How to set PATH environment variable in CMake script?) e riprovare.
Se ancora non funziona, provare a impostare il percorso CXX compilatore direttamente esportandolo (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 how to specify new gcc path for cmake
Nota: Quando si utilizza il Generatore "MinGW Makefiles" devi utilizzare il programma mingw32-make
distribuito con MinGW
Ancora non funziona? Quello è strano. Assicurati che il compilatore sia presente e disponga dei diritti eseguibili (vedi anche il capitolo precedente sulle precondizioni).
In caso contrario, l'ultima risorsa di CMake è di non provare qualsiasi ricerca compilatore stesso e impostare le variabili interne di CMake direttamente
$ cmake -DCMAKE_C_COMPILER=/c/MinGW/bin/gcc.exe -DCMAKE_CXX_COMPILER=/c/MinGW/bin/g++.exe ..
Per ulteriori dettagli vedere Cmake doesn't honour -D CMAKE_CXX_COMPILER=g++ e Cmake error setting compiler
In alternativa tali variabili possono anche essere impostati via cmake-gui.exe
su Windows. Vedere Cmake cannot find compiler
Sfondo: Più o meno lo stesso con Visual Studio. CMake supporta tutti i tipi di sapori GCC. Cerca le variabili di ambiente (CC, CXX, ...) o cerca semplicemente di chiamare il compilatore. Inoltre rileverà eventuali prefissi (quando cross-compiling) e cerca di aggiungerlo a tutte le binutils toolchain del compilatore GNU (ar
, ranlib
, strip
, ld
, nm
, objdump
, objcopy
).
È possibile configurare il progetto per Visual Studio con il relativo compilatore o per Makefile con gcc. Quale metodo hai provato? – Tsyvarev
Qual è il comando cmake che stai inserendo? – bames53
Stai usando l'ultimo CMake? Che generatore hai usato? Hai eseguito i comandi dal prompt dei comandi di Visual Studio 2015 (così ha impostato le variabili di ambiente del compilatore)? – drescherjm