Error de CMake en CMakeLists.txt:30 (proyecto): No se pudo encontrar CMAKE_C_COMPILER
Estoy intentando crear una solución de Visual Studio con CMake para compilar la última versión de aseprite y CMake sigue dándome:
No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.
Ya descargué GCC y estoy usando Visual Studio 2015 .
Estoy siguiendo este tutorial:
https://github.com/aseprite/aseprite/blob/master/INSTALL.md
Para Ubuntu, instale lo siguiente:
sudo apt-get update && sudo apt-get install build-essential
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 al detectar 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 cualquier otro programa (directamente sin CMake)
- Por ejemplo, es posible que tenga el IDE, pero que no haya instalado el compilador o el marco de soporte como se describe en Problemas al generar una solución para VS 2017 con CMake o ¿Cómo le digo a CMake que use Clang en Windows?
Tienes la última versión de CMake
Tiene derechos de acceso en la unidad en la que desea que CMake genere su entorno de compilación.
Tiene un directorio de compilación limpio (porque CMake almacena en caché los elementos del último intento), por ejemplo, como subdirectorio de su árbol de fuentes.
Windows cmd.exe
> rmdir /s /q VS2015 > mkdir VS2015 > cd VS2015
cáscara de golpe
$ 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 buscar y ejecutar con cualquiera de sus compiladores predeterminados? Corre sin dar un generador.
> cmake .. -- Building for: Visual Studio 14 2015 ...
Perfecto si determinó correctamente el generador a usar, como aquí
Visual Studio 14 2015
¿Qué fue lo que realmente falló?
En el directorio de resultados 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 enCMakeFiles\[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 puede variar):
> "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" > cmake ..
o use el
Developer Command Prompt for VS2015
acceso directo en el menú Inicio de Windows enAll 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 a ninguno de los demás se les ocurrió algo, simplemente intenta llamar al compilador.
CMake no puede encontrar GCC (MinGW/MSys)
Inicias el
bash
shell MSysmsys.bat
y simplemente intentas llamar directamentegcc
$ gcc gcc.exe: fatal error: no input files compilation terminated.
Aquí lo encontró
gcc
y se queja de que no le di ningún parámetro para 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 de su compilador (consulte ¿Cómo configurar la variable de entorno PATH en el script CMake? ) e inténtelo nuevamente.Si aún no funciona, intente configurar la
CXX
ruta del compilador directamente exportándola (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 GCC para CMake.
Nota : Cuando utilice el generador "MinGW Makefiles", debe utilizar el
mingw32-make
programa distribuido con MinGW¿Sigue sin funcionar? Eso es raro. Asegúrese de que el compilador esté allí y tenga derechos ejecutables (consulte también el capítulo de condiciones previas anterior).
De lo contrario, el último recurso de CMake es no intentar ninguna búsqueda del compilador y configurar las variables internas de CMake directamente mediante
$ 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
cmake-gui.exe
en Windows. Ver Cmake no puede encontrar el compilador
Antecedentes : muy parecido a 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, detectará cualquier prefijo (cuando realice una compilación cruzada ) e intentará agregarlo a todos los binutils de la cadena de herramientas del compilador ar
GNU ( ,,,,,,, y ) .ranlib
strip
ld
nm
objdump
objcopy
Esto me sucedió después de instalar Visual Studio 15 2017.
El compilador de C++ para Visual Studio 14 2015 no fue el problema. Parecía ser un problema con el SDK de Windows 10.
Agregar los SDK de Windows 10 a Visual Studio 14 2015 resolvió el problema.
Ver captura de pantalla adjunta.