CMake no encuentra el comstackdor de Visual C ++

Después de instalar Visual Studio 2015 y ejecutar CMake en un proyecto anterior, c cometió errores que indicaban que no podía encontrar el comstackdor de C.

The C compiler identification is unknown The CXX compiler identification is unknown CMake Error at CMakeLists.txt:4 (PROJECT): No CMAKE_C_COMPILER could be found. CMake Error at CMakeLists.txt:4 (PROJECT): No CMAKE_CXX_COMPILER could be found. 

Fui en busca de cl.exe en la carpeta de Visual Studio, C:\Program Files\Microsoft Visual Studio 14.0 , y no pude encontrarlo.
¿Cómo configuro CMake para que funcione en Windows con Visual Studio 2015?

He encontrado la solución. Si bien Visual Studio IDE se instaló correctamente, no instaló ninguna herramienta de comstackción y, por lo tanto, no instaló el comstackdor de C ++. Al intentar crear manualmente un proyecto de C ++ en la GUI de Visual Studio 2015 , pude pedirle que descargara los paquetes de C ++. Cmake pudo encontrar el comstackdor sin dificultad.

Aquí está la solución que funcionó para mí:
1. Abra la herramienta de solicitud de comando de VS studio (como administrador)
2. Navega hacia donde tienes el ejecutable Cmake
3. Ejecute Cmake.exe
4. Proceda como de costumbre para seleccionar la comstackción y la carpeta de origen
5. Seleccione el comstackdor de VS apropiado y presione el botón de configuración

Con suerte, debería funcionar sin problemas. Buena suerte

Busqué en el archivo CMakeError.log y encontré un error sobre cannot run 'rc.exe'

Busqué y encontré esta respuesta para copiar RC.Exe y RcDll.Dll del contenedor de Microsoft SDKs al contenedor de VC, y luego CMake funcionó.


Editar: la respuesta superior a otra pregunta sugiere que se trata de un problema de PATH, por lo que podría ser suficiente para garantizar que la bandeja de Microsoft SDK esté en su PATH.

Asegúrese de estar utilizando la versión correcta de Visual Studio en el generador. Había seleccionado Visual Studio 15 incorrectamente cuando se instaló Visual Studio 14.

Aquellos que tropiezan con esto en Visual Studio 2017: hay una característica relacionada con CMake que debe seleccionarse e instalarse junto con los conjuntos de herramientas de comstackción relevantes. Vea la captura de pantalla a continuación.

Deben instalarse herramientas Visaul C ++ para CMake

Para mí, revisé el archivo CMakeError.log y encontré:

[…] error MSB8036: Windows SDK versión 8.1 no se encontró. Instale la versión requerida de Windows SDK o cambie la versión del SDK en las páginas de propiedades del proyecto o haga clic derecho en la solución y seleccione “Retarget solution”.

Esto a pesar de usar Visual Studio 2017 en Windows 7. Parece que cmake está intentando construir su proyecto de detección con el SDK de Windows 8.1.

Usé el Instalador de Visual Studio para agregar ese componente y ahora cmake está contento como una almeja.

Si ninguna de las soluciones anteriores funcionó, entonces deténgase y haga una verificación de cordura.

Me quemé usando la cadena incorrecta -G y me dio este error engañoso.

En primer lugar, ejecute desde el indicador de comandos VS no el indicador de comando regular. Puede encontrarlo en el Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015 Esto configura todas las rutas correctas a las herramientas VS, etc.

Ahora vea qué generadores están disponibles de cmake …

cmake -help

...... The following generators are available on this platform: Visual Studio 15 [arch] = Generates Visual Studio 15 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files. Optional [arch] can be "Win64" or "IA64". ...

Luego elige la cadena apropiada con el [arco] agregado.

mkdir _build cd _build cmake .. -G "Visual Studio 15 Win64"

Ejecutar cmake en un subdirectorio hace que sea más fácil hacer una ‘limpieza’ ya que puede simplemente eliminar todo en ese directorio.

Actualicé a Visual Studio 15 pero no estaba prestando atención y estaba tratando de generar para 2012.

Menú -> Visual Studio 2015 -> Símbolo del sistema MSBuild para VS2015 Luego cmake puede encontrar cl.exe

establecer PATH = “c: \ Archivos de progtwig (x86) \ Windows Kits \ 10 \ bin \ 10.0.16299.0 \ x64 \”;% PATH% cambiar la ruta superior a donde se instaló su Windows SDK

El cmake puede encontrar rc.exe

cd al camino de cmakelist.txt

 md .build cd .build cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release cmake --build . 

El parámetro después de -G debe ser captado por cmake –help; usted puede o no tener el generador

Como alternativa a la respuesta aceptada, puede instalar C ++ directamente como se describe aquí .

Me encontré con el mismo problema y lo solucioné relanzando la instalación de Visual Studio y marcando la siguiente opción:

Windows and Web Development / Universal Windows App Development Tools / Windows 10 SDK

Contiene los encabezados estándar de C ++ utilizados en la mayoría de las aplicaciones y, por lo tanto, a menudo también es necesario instalarlo.

En mi caso, pude ver en el CMakeError.log que CMake no podía encontrar el WindowsSDK ( MSB8003: Could not find WindowsSDKDir variable from the registry ).

La versión se puede especificar en la línea de comando en la primera ejecución de cmake usando:

 -DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION= 

Fui más lejos después de configurar eso, pero tuve más problemas más tarde (así que supongo que mi entorno está en mal estado de alguna manera), pero tal vez ayude a alguien con este problema.

Un par de consejos:

-Intenta establecer la ruta manualmente marcando ‘avanzado’ y modificando CMAKE_LINKER y CMAKE_MAKE_PROGRAM-Borrar la memoria caché – en el CMake con Gui ve a: Archivo -> Eliminar caché.

Mi problema era una combinación de lo expresado anteriormente: configuré la versión del comstackdor en 15 en lugar de 14 y cuando se corrigió, tuve que eliminar la caché.

También inicié el símbolo del sistema de VS como administrador y desde allí ejecuté el cmake-gui.exe

Entonces todo funcionó como se suponía.

En mi caso el problema era que el proyecto padre, que incluye googletest vía add_subdirectory(gtest_dir) se definió como PROJECT( projname CXX ) alguna manera, cmake no reconoce PROJECT(sub_project_name CXX C) ya que el comstackdor de C no está configurado en el padre. PROJECT( projname CXX C) el problema usando PROJECT( projname CXX C) en mi CMakeLists.txt principal

En mi caso, había un conjunto de variables de entorno que fue la razón de este error. El problema se resolvió después de eliminar cxx_flags de las variables de entorno.

Si estás en Visual Studio 2017 necesitas al menos CMake 3.8.

Esta podría ser otra solución para aquellos con la última versión de creador de Windows 10:

https://stackoverflow.com/a/43456623/5925642

Ninguna de las soluciones anteriores funcionó para mí. Sin embargo, noté que, aunque instalé Visual Studio 15, el directorio creado en mi computadora era para visual studio 14. Cuando especifiqué Visual Studio 14 cuando presioné el botón config, funcionó. Intenté publicar lo anterior al suscribirme a Facebook, pero recibí un mensaje que decía que no se podía hacer porque la solicitud parecía sospechosa.

Tuve este problema en Win10 cuando usé VS 2015 Professional, ¡mientras que VS 2015 Express funcionó! Bajo Win7, ambas versiones VS solían funcionar.

Los nuevos proyectos creados a partir de VS 2015 Professional IDE se comstackn correctamente, pero CMake no puede encontrar el informe del comstackdor:

 The C compiler identification is unknown The CXX compiler identification is unknown 

Upgraded CMake de 3.4.1 a 3.11.4. Problema desaparecido

Tuve un problema similar con el proyecto VS2017 generado a través de cmake. Algunos de los paquetes faltaban al instalar el estudio visual en el desarrollo de escritorio con C ++. Ver instantánea:

Paquetes VS 2017:

Paquetes VS 2017

Además, actualice cmake a la última versión.

Obtuve este problema con CMake 3.12.1, después de una actualización de Visual Studio 2017. Simplemente volví a ejecutar CMake y funcionó.

Debido a que Cmake no puede encontrar su comstackdor de estudio visual, inicie cualquier proyecto que descargue los comstackdores necesarios y Cmake debe poder hacerlo.