c++ - gui - cmake linux
CMake no encuentra el compilador de Visual C++ (26)
Después de instalar Visual Studio 2015 y ejecutar CMake en un proyecto anterior, los errores de CMake indican que no pudo encontrar el compilador 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 a buscar
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?
¡Tenía este problema en Windows 10 cuando usaba Visual Studio 2015 Professional, mientras que Visual Studio 2015 Express funcionaba! En Windows 7, ambas versiones de Visual Studio solían funcionar.
Los nuevos proyectos creados a partir de Visual Studio 2015 Professional IDE se compilaron correctamente, pero CMake no pudo encontrar el informe del compilador:
The C compiler identification is unknown
The CXX compiler identification is unknown
Actualicé CMake de 3.4.1 a 3.11.4, y ahora el problema desapareció.
Aquí está la solución que funcionó para mí:
- Abra la herramienta de símbolo del sistema de Visual Studio (como administrador)
- Vaya a donde tiene el ejecutable CMake
- Ejecute Cmake.exe
- Proceda como de costumbre para seleccionar la carpeta de compilación y fuente
- Seleccione el compilador de Visual Studio apropiado y presione el botón de configuración
Esperemos que funcione sin problemas.
Asegúrese de estar utilizando la versión correcta de Visual Studio en el generador. Había seleccionado incorrectamente Visual Studio 15 cuando se instaló Visual Studio 14.
Busque en Cmakelists.txt si encuentra ARM que necesita instalar C ++ para ARM y también vcvarsall.bat para la carpeta bin ARM.
Son estos paquetes:
C ++ Plataforma universal de Windows para ARM64 "No requerido"
Compiladores y bibliotecas de Visual C ++ para ARM "No requerido"
Compiladores y bibliotecas de Visual C ++ para ARM64 "Muy probablemente necesarios"
Required for finding Threads on ARM
enable_language(C)
enable_language(CXX)
Entonces los problemas podrían desaparecer:
No se pudo encontrar CMAKE_C_COMPILER.
No se pudo encontrar CMAKE_CXX_COMPILER.
Si lo anterior no resuelve su problema?
Opcionalmente, puede eliminar las opciones C y CXX en cmakelists.txt estableciendo # enfrente de donde se encuentra enable_language (C). Y evite la compilación del procesador ARM de Android.
Comprobando CMakeErrors.log en CMakeFiles devuelto:
C: / Archivos de programa (x86) / MSBuild / Microsoft.Cpp / v4.0 / V140 / Platforms / x64 / PlatformToolsets / v140_xp / Toolset.targets (36,5): advertencia MSB8003: No se pudo encontrar la variable WindowsSdkDir_71A del registro. TargetFrameworkVersion o PlatformToolset se puede establecer en un número de versión no válido.
El error significa que las herramientas de compilación para XP (v140_xp) no están instaladas. Para solucionarlo, instalé la función adecuada en el instalador de Visual Studio 2019 en la pestaña Componentes individuales:
En mi caso, el problema era que el proyecto principal, que incluye googletest a través de
add_subdirectory(gtest_dir)
fue definido como
PROJECT( projname CXX )
De alguna manera, CMake no reconoce
PROJECT(sub_project_name CXX C)
ya que el compilador de C no está configurado en el padre.
Resolví el problema usando
PROJECT( projname CXX C)
en mi archivo principal
CMakeLists.txt
.
En mi caso, había un conjunto de variables de entorno que era la razón de este error. El problema se resolvió después de eliminar cxx_flags de las variables de entorno.
En mi caso, pude ver en el
CMakeError.log
que CMake no pudo encontrar el SDK de Windows (
MSB8003: Could not find WindowsSDKDir variable from the registry
).
La versión se puede especificar en la línea de comandos en la primera ejecución de CMake usando:
-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=
Llegué más lejos después de configurar eso, pero más tarde tuve más problemas (así que supongo que mi entorno está desordenado de alguna manera), pero tal vez ayude a alguien con este problema.
Encontré esta solución en y trabajo para mí, aunque no funciona con otras soluciones si tiene un sistema operativo Windows 10, los siguientes pasos solucionarán el problema:
1) vaya a C: / Archivos de programa (x86) / Microsoft SDKs / Windows / v7.1A / Bin
2) luego copie RC.exe y RcDll de este archivo
3) vaya a C: / Archivos de programa (x86) / Microsoft Visual Studio 14.0 / VC / bin y pegue los dos archivos que ha copiado en él.
eso es todo, espero que sea útil ...
Esta podría ser otra solución para aquellos con la última versión del creador de Windows 10:
Desbordamiento de pila posterior Error fatal LNK1104: no se puede abrir el archivo ''gdi32.lib''
He encontrado la solución. Si bien el IDE de Visual Studio se instaló correctamente, no instaló ninguna herramienta de compilación y, por lo tanto, no instaló el compilador 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 compilador sin ninguna dificultad.
Me encontré con el mismo problema y lo solucioné reiniciando 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 C ++ estándar utilizados en la mayoría de las aplicaciones y, por lo tanto, a menudo también es necesario instalarlo.
Menú → Visual Studio 2015 → Símbolo del sistema de MSBuild para Visual Studio 2015. Luego, CMake puede encontrar
cl.exe
.
set PATH="c:/Program Files (x86)/Windows Kits/10/bin/10.0.16299.0/x64/";%PATH%
Cambie la ruta superior a donde está instalado su SDK de Windows.
CMake puede encontrar
rc.exe
.
cd a la ruta de
CMakeLists.txt
y do:
md .build
cd .build
cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release
cmake --build .
CMake debe buscar el parámetro después de
-G
.
Use
--help
;
Puede o no tener el generador.
Miré 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 bin de los SDK de Microsoft al bin de VC, y luego CMake funcionó.
Editar: la respuesta principal a otra pregunta sugiere que se trata de un problema de RUTA, por lo que podría ser suficiente para garantizar que el bin del SDK de Microsoft esté en su RUTA.
Ninguna de las soluciones anteriores funcionó para mí. Sin embargo, noté que aunque instalé Visual Studio versión 15 (que no debe confundirse con Visual Studio 2015), el directorio creado en mi computadora era para Visual Studio 14.
Cuando especifiqué Visual Studio 14 cuando presioné el botón de configuración funcionó.
Para mí, verifiqué el archivo
CMakeError.log
y encontré:
[...] error MSB8036: no se encontró la versión 8.1 del SDK de Windows. Instale la versión requerida del SDK de Windows o cambie la versión del SDK en las páginas de propiedades del proyecto o haga clic con el botón derecho en la solución y seleccione "Solución de retardo".
Esto es a pesar de usar Visual Studio 2017 en Windows 7. Por lo tanto, parece que CMake está tratando de construir su proyecto de detección con el SDK de Windows 8.1.
Utilicé el instalador de Visual Studio para agregar ese componente y ahora CMake está feliz como una almeja.
Porque CMake no puede encontrar su compilador de Visual Studio. Inicie cualquier proyecto que descargue los compiladores necesarios y CMake debe poder encontrarlo en ese momento.
Se resuelve agregando el componente faltante Modificar-> continuar agregar de la siguiente manera
Si estás en Visual Studio 2017, ¡necesitas al menos CMake 3.8!
Si ninguna de las soluciones anteriores funcionó, deténgase y realice una verificación de cordura.
Me quemé usando la cadena incorrecta
-G <config>
y me dio este error engañoso.
Primero, ejecute desde el símbolo del sistema VS
no
el símbolo del sistema 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 en cmake ...
cmake -help
...<snip>... 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, elija 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 eliminar todo en ese directorio.
Actualicé a Visual Studio 15 pero no estaba prestando atención y estaba tratando de generar para 2012.
Tengo este problema con CMake 3.12.1, después de una actualización de Visual Studio 2017. Simplemente volví a ejecutar CMake y funcionó.
Tuve este problema con CMake GUI y VS 21019 Community Edition. Creo que pude haber instalado CMake antes de Visual Studio; ciertamente, después de actualizar CMake 3.15.2 a 3.15.3, el problema desapareció.
Tuve un problema relacionado: los generadores de Visual C ++ ni siquiera estaban en la lista cuando ejecutaban
cmake --help
.
where cmake
en la consola y descubrí que cygwin también proporciona su propio archivo
cmake.exe
, que se estaba utilizando.
Cambiar el orden de los directorios en PATH solucionó el problema.
Un par de consejos:
- Intente establecer la ruta manualmente marcando ''avanzado'' y modificando CMAKE_LINKER y CMAKE_MAKE_PROGRAM
- Elimine el caché: en CMake con GUI vaya a: Archivo → Eliminar caché.
Mi problema era una combinación de lo establecido anteriormente: establecí la versión del compilador en 15 en lugar de 14 y, cuando se corrigió, tuve que eliminar el caché.
También inicié el símbolo del sistema de Visual Studio como administrador y desde allí ejecuté cmake-gui.exe
Entonces todo funcionó como se suponía.