Esos mensajes de error
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 significa que CMake no pudo encontrar su compilador C / CXX para compilar un programa de prueba simple (una de las primeras cosas que CMake intenta mientras detecta su entorno de compilación).
Los pasos para encontrar su problema dependen del entorno de compilación que desee generar. Los siguientes tutoriales son una colección de respuestas aquí en Stack Overflow y algunas de mis propias experiencias con CMake en Microsoft Windows 7/8/10 y Ubuntu 14.04.
Condiciones previas
- Ha instalado el compilador / IDE y pudo compilar una vez cualquier otro programa (directamente sin CMake)
- Tienes lo ultimo versión de CMake
- Tiene derechos de acceso en la unidad que desea que CMake genere su entorno de compilación
Tiene un directorio de compilación limpio (porque CMake almacena en caché las cosas del último intento), por ejemplo, como subdirectorio de su árbol de fuentes
Windows cmd.exe
> rmdir /s /q VS2015
> mkdir VS2015
> cd VS2015
Bash shell
$ rm -rf MSYS
$ mkdir MSYS
$ cd MSYS
y asegúrese de que su shell de comandos apunte a su directorio de salida binaria recién creado.
Cosas generales que puedes / debes probar
¿CMake puede encontrar y ejecutar con cualquier compilador predeterminado? Corre sin dar un generador
> cmake ..
-- Building for: Visual Studio 14 2015
...
Perfecto si determina correctamente el generador a usar, como aquí Visual Studio 14 2015
¿Qué fue lo que realmente falló?
En el directorio de salida de la compilación anterior, busque CMakeFiles\CMakeError.log
cualquier mensaje de error que tenga sentido para usted o intente abrir / compilar el proyecto de prueba generado en CMakeFiles\[Version]\CompilerIdC
| CompilerIdCXX
directamente desde la línea de comando (como se encuentra en el registro de errores).
CMake no puede encontrar Visual Studio
Intente seleccionar la versión correcta del generador :
> cmake --help
> cmake -G "Visual Studio 14 2015" ..
Si eso no ayuda, intente configurar primero las variables de entorno de Visual Studio (la ruta podría variar):
> "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
> cmake ..
o use el Developer Command Prompt for VS2015
atajo en su menú de inicio de Windows en All Programs
/ Visual Studio 2015
/ Visual Studio Tools
(gracias a @Antwane por la pista).
Antecedentes : CMake admite todas las versiones y versiones de Visual Studio (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate, etc.). Para determinar la ubicación del compilador, utiliza una combinación de búsqueda en el registro (por ejemplo, en HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir
), variables de entorno del sistema y, si ninguno de los otros encontró algo, simplemente intenta llamar al compilador.
CMake no puede encontrar GCC (MinGW / MSys)
Inicia el bash
shell de MSys con msys.bat
e intenta llamar directamentegcc
$ gcc
gcc.exe: fatal error: no input files
compilation terminated.
Aquí encontró gcc
y se queja de que no le di ningún parámetro con el que trabajar.
Entonces lo siguiente debería funcionar:
$ cmake -G "MSYS Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
$ make
Si no se encontró GCC, llame export PATH=...
para agregar la ruta del compilador (consulte ¿Cómo configurar la variable de entorno PATH en el script CMake? ) E intente nuevamente.
Si aún no funciona, intente establecer la CXX
ruta del compilador directamente exportándolo (la ruta puede variar)
$ 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
Para obtener más detalles, consulte Cómo especificar una nueva ruta de GCC para CMake
Nota : Cuando use el generador "MinGW Makefiles", debe usar el mingw32-make
programa distribuido con MinGW
¿Sigue sin funcionar? Eso es raro. Asegúrese de que el compilador esté allí y tenga derechos de ejecución (consulte también el capítulo anterior sobre las condiciones previas).
De lo contrario, el último recurso de CMake es no intentar ninguna búsqueda del compilador y establecer las variables internas de CMake directamente por
$ cmake -DCMAKE_C_COMPILER=/c/MinGW/bin/gcc.exe -DCMAKE_CXX_COMPILER=/c/MinGW/bin/g++.exe ..
Para obtener más detalles, consulte Cmake no respeta -D CMAKE_CXX_COMPILER = g ++ y el compilador de configuración de errores de Cmake
Alternativamente, esas variables también se pueden configurar a través cmake-gui.exe
de Windows. Ver Cmake no puede encontrar el compilador
Antecedentes : lo mismo que con Visual Studio. CMake admite todo tipo de versiones de GCC. Busca las variables de entorno (CC, CXX, etc.) o simplemente intenta llamar al compilador. Además, se detectará cualquier prefijo (cuando -compilación cruzada ) y trata de añadir a todos binutils de la cadena de herramientas GNU (compilador ar
, ranlib
, strip
, ld
, nm
, objdump
, y objcopy
).