Saltar al contenido

CMake error en CMakeLists.txt:30 (proyecto): No se pudo encontrar CMAKE_C_COMPILER

Nuestro team redactor ha estado mucho tiempo buscando respuestas a tu duda, te dejamos la solución de modo que nuestro deseo es resultarte de gran apoyo.

Solución:

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 intenta CMake 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)
    • Por ejemplo, puede tener el IDE, pero es posible que no haya instalado el compilador o el marco de soporte como se describe en Problemas al generar 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é 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
    

    cáscara de golpe

    $ rm -rf MSYS
    $ mkdir MSYS
    $ cd MSYS
    

    y asegúrese de que su shell de comando apunte a su directorio de salida binaria recién creado.

Cosas generales que puedes/debes probar

  1. ¿CMake puede encontrar y ejecutar con cualquiera de sus compiladores predeterminados? Ejecutar 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

  2. ¿Qué fue lo que realmente falló?

    En el directorio de salida de compilación anterior, mire CMakeFilesCMakeError.log para 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

  1. Intente seleccionar la versión correcta del generador:

    > cmake --help
    > cmake -G "Visual Studio 14 2015" ..
    
  2. Si eso no ayuda, intente establecer primero las variables de entorno de Visual Studio (la ruta puede variar):

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

    o usar el Developer Command Prompt for VS2015 acceso directo en el 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_MACHINESOFTWAREMicrosoftVisualStudio[Version];InstallDir), las variables de entorno del sistema y, si ninguno de los otros encontró algo, simplemente intente llamar al compilador.

CMake no puede encontrar GCC (MinGW/MSys)

  1. Inicias el MSys bash concha con msys.bat y trata de llamar directamente gcc

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

    Aquí sí encontró gcc y se queja de que no le di ningún parámetro con el que trabajar.

    Así que 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 (ver ¿Cómo configurar la variable de entorno PATH en el script CMake?) e intenta de nuevo.

  2. Si sigue sin funcionar, intente configurar el 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: Al usar el generador “MinGW Makefiles” tienes que usar el mingw32-make programa distribuido con MinGW

  3. ¿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 de condiciones previas anterior).

    De lo contrario, el último recurso de CMake es no intentar ninguna búsqueda del compilador y establecer 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 más detalles ver Cmake no respeta -D CMAKE_CXX_COMPILER=g++ y Compilador de configuración de errores Cmake

    Alternativamente, esas variables también se pueden configurar a través de cmake-gui.exe en Windows Ver Cmake no puede encontrar el compilador

Antecedentes: Muy parecido a Visual Studio. CMake es compatible con 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 (al compilar de forma cruzada) e intentará agregarlo a todos los binutils de la cadena de herramientas del compilador GNU (ar, ranlib, strip, ld, nm, objdumpy objcopy).

Para Ubuntu, instale lo siguiente:

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

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 para mí.

Ver captura de pantalla adjunta.

Ingrese la descripción de la imagen aquí

Sección de Reseñas y Valoraciones

Si tienes alguna incertidumbre o capacidad de arreglar nuestro escrito te inspiramos añadir una interpretación y con placer lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *