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

Estoy intentando hacer una solución de Visual Studio con CMake para comstackr la última versión de aseprite y CMake me sigue dando lo siguiente:

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

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 comstackdor C / CXX para comstackr un progtwig de prueba simple (una de las primeras cosas que CMake intenta al detectar su entorno de comstackción).

Los pasos para encontrar su problema dependen del entorno de comstackción que desea 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 8/07/10 y Ubuntu 14.04.

Condiciones previas

  • Ha instalado el comstackdor / IDE y pudo comstackr cualquier otro progtwig (directamente sin CMake)
    • Por ejemplo, usted puede tener el IDE, pero puede no haber instalado el comstackdor o el marco de soporte en sí, como se describe en Solución de problemas para VS 2017 con CMake o ¿Cómo le digo a CMake que use Clang en Windows?
  • Tienes la última versión de CMake
  • Usted tiene derechos de acceso en la unidad que desea que CMake genere su entorno de construcción
  • Tiene un directorio de comstackción limpio (porque CMake almacena en caché las cosas desde el último bash), por ejemplo, como subdirectorio de su árbol fuente

    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 apunta a su directorio de salida binario recién creado.

Cosas generales que puedes / deberías intentar

  1. ¿CMake puede encontrar y ejecutar con cualquier / su comstackdor predeterminado? Correr sin dar un generador

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

    Perfecto si determina correctamente el uso del generador, como aquí Visual Studio 14 2015

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

    En el directorio de salida de comstackción anterior, busque en CMakeFiles\CMakeError.log cualquier mensaje de error que tenga sentido para usted o intente abrir / comstackr el proyecto de prueba generado en CMakeFiles\[Version]\CompilerIdC | CompilerIdCXX directamente desde la línea de comandos (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 primero establecer 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 utilice el Developer Command Prompt for VS2015 del Developer Command Prompt for VS2015 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 todos los lanzamientos y versiones de Visual Studio (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate, etc.). Para determinar la ubicación del comstackdor utiliza una combinación de búsqueda en el registro (por ejemplo, en HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir ), las variables de entorno del sistema y, si ninguno de los otros se le ocurrió algo, claramente Intenta llamar al comstackdor.

CMake no puede encontrar GCC (MinGW / MSys)

  1. Comienzas el shell bash MSys con msys.bat y solo tratas de llamar directamente a gcc

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

    Aquí 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 a export PATH=... para agregar su ruta de comstackdores (consulte Cómo establecer la variable de entorno PATH en la secuencia de comandos CMake? ) Y vuelva a intentarlo.

  2. Si aún no funciona, intente establecer la ruta del comstackdor CXX 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”, debe usar el progtwig mingw32-make distribuido con MinGW

  3. ¿Sigue sin funcionar? Eso es raro. Asegúrese de que el comstackdor esté allí y tenga derechos ejecutables (consulte también el capítulo anterior de condiciones previas).

    De lo contrario, el último recurso de CMake es no probar ninguna búsqueda de comstackdor 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 más detalles, vea Cmake no cumple -D CMAKE_CXX_COMPILER = comstackdor de configuración de errores g ++ y Cmake

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

Antecedentes : casi lo mismo que con Visual Studio. CMake admite todo tipo de sabores de GCC. Busca las variables de entorno (CC, CXX, etc.) o simplemente intenta llamar al comstackdor. Además, detectará cualquier prefijo (cuando se comstack de forma cruzada ) e intentará agregarlo a todos los binutils de la cadena de herramientas del comstackdor de GNU ( ar , ranlib , strip , ld , nm , objdump y objcopy ).

También experimenté este error al trabajar con CMake:

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

El recuadro de ‘advertencia’ en el artículo de la biblioteca de MSDN Visual C ++ en Visual Studio 2015 me brindó la ayuda que necesitaba.

Visual Studio 2015 no viene con C ++ instalado por defecto. Entonces, crear un nuevo proyecto de C ++ le pedirá que descargue los componentes de C ++ necesarios.

Esto me sucedió después de instalar Visual Studio 15 2017.

El comstackdor 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 por mí.

Ver la captura de pantalla adjunta.

Ingrese la descripción de la imagen aquí

Me encontré con este problema al comstackr libgit2-0.23.4. Para mí, el problema era que el comstackdor de C ++ y los paquetes relacionados no estaban instalados con VS2015, por lo que faltaba el archivo “C: \ Archivos de progtwig (x86) \ Microsoft Visual Studio 14.0 \ VC \ vcvarsall.bat” y Cmake no podía encontrar el comstackdor

Traté de crear manualmente un proyecto de C ++ en la GUI de Visual Studio 2015 ( C: \ Archivos de progtwig (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe ) y al crear el proyecto, recibí un mensaje para descargar C ++ y paquetes relacionados.

Después de descargar los paquetes necesarios, pude ver que vcvarsall.bat & Cmake pudo encontrar el comstackdor y se ejecutó con éxito con el siguiente 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 

Tuve los mismos errores con CMake. En mi caso, he usado la versión de Visual Studio incorrecta en el cuadro de diálogo inicial de CMake, donde tenemos que seleccionar el comstackdor de Visual Studio.

Luego lo cambié a “Visual Studio 11 2012” y las cosas funcionaron. (Tengo la versión Visual Studio Ultimate 2012 en mi PC). En general, intente ingresar una versión anterior de la versión de Visual Studio en el cuadro de diálogo inicial de configuración de CMake.

Asegúrese de haber seleccionado la versión correcta de Visual Studio. Esto es más complicado de lo que parece porque Visual Studio 2015 es en realidad Visual Studio 14, y de manera similar Visual Studio 2012 es Visual Studio 11. Había seleccionado Visual Studio 15 incorrectamente, que en realidad es Visual Studio 2017, cuando tuve 2015 instalado.

Ninguna de las soluciones aquí resuelve mi problema, solo cuando instalo Windows Update para el tiempo de ejecución de C universal.

Ahora CMake está funcionando y no se cuelga más enlaces de Visual Studio.

Actualización para Universal C Runtime en Windows

Para Ubuntu, instale las cosas a continuación:

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

Para mí, este problema desapareció en Windows cuando moví mi proyecto a un directorio padre más superficial, es decir, a:

C:\Users\spenc\Desktop\MyProjectDirectory

en lugar de

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

Creo que el origen del problema fue que MSBuild tiene una restricción de longitud de ruta de archivo de 260 caracteres. Esto hace que la prueba básica del comstackdor CMake realice para generar un proyecto llamado CompilerIdCXX.vcxproj que falla con el error:

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

porque la longitud de la ruta del archivo, por ejemplo

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

excede la restricción MAX_PATH.

CMake luego concluye que no hay comstackdor CXX.

Actualicé Visual Studio 2015 actualización 2 a Visual Studio 2015 actualización 3, y resolvió mi problema.

Tuve el mismo problema con cmake-gui ( No CMAKE_CXX_COMPILER could be found. ), mientras que ejecutar CMake desde la línea de comandos funcionó bien. Después de agregar manualmente las entradas

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

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

a la variable de entorno PATH me funcionó.

Esto funciona para mí en Ubuntu 17.10 (Artful Aardvark):

 apt-get update apt-get install build-essential 

También puede asegurarse de que es el usuario sudo y tiene acceso de LECTURA / ESCRITURA en el directorio en el que está trabajando. Tuve un problema similar en OS X, y lo solucioné simplemente ingresando en modo sudo.

Para mí, funcionó utilizar el símbolo del sistema de desarrollador que viene con Visual Studio y luego simplemente cd a your/jcef/dir y ejecutar cmake -G "Visual Studio 14 Win64" ..