tutorial instalar gui como c++ windows cmake windows-10 visual-studio-2017

c++ - instalar - cmake windows tutorial



rc.exe ya no se encuentra en el símbolo del sistema VS 2015 (10)

Acabo de instalar Windows 10 Creators Update (versión 10.0.15063).

Tengo instaladas varias versiones de Visual Studio (2012, 2013, 2015 y 2017). Instalé VS 2017 solo hace un par de semanas.

Problema

CMake (versión 3.8.1) ya no encuentra el compilador C / C ++ cuando se ejecuta dentro de un "Símbolo del sistema nativo VS2015 x64" (funciona correctamente cuando se ejecuta dentro de un símbolo del sistema VS 2017).

Reproducción

Contenido de CMakeLists.txt :

project (test) add_executable (test test.cpp)

(El contenido de test.cpp es irrelevante).

CMake invocación, en un símbolo del sistema nativo VS2015 x64:

> mkdir build > cd build > cmake -G "Visual Studio 14 2015 Win64" ..

Salida CMake:

-- The C compiler identification is unknown -- The CXX compiler identification is unknown CMake Error at CMakeLists.txt:1 (project): No CMAKE_C_COMPILER could be found. CMake Error at CMakeLists.txt:1 (project): No CMAKE_CXX_COMPILER could be found. -- Configuring incomplete, errors occurred! See also "D:/dev/cmaketest/build/CMakeFiles/CMakeOutput.log". See also "D:/dev/cmaketest/build/CMakeFiles/CMakeError.log".

Análisis

La razón de la falla es clara cuando se mira CMakeFiles/CMakeError.log :

ClCompile: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/CL.exe /c /nologo /W0 /WX- /Od /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Debug//" /Fd"Debug/vc140.pdb" /Gd /TC /errorReport:queue CMakeCCompilerId.c CMakeCCompilerId.c Link: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/link.exe /ERRORREPORT:QUEUE /OUT:"./CompilerIdC.exe" /INCREMENTAL:NO /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level=''asInvoker'' uiAccess=''false''" /manifest:embed /PDB:"./CompilerIdC.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"./CompilerIdC.lib" /MACHINE:X64 Debug/CMakeCCompilerId.obj LINK : fatal error LNK1158: cannot run ''rc.exe'' [D:/dev/cmaketest/build/CMakeFiles/3.8.1/CompilerIdC/CompilerIdC.vcxproj]

rc.exe (compilador de recursos) no se encuentra. De hecho, en el mismo símbolo del sistema VS 2015:

> where rc.exe INFO: Could not find files for the given pattern(s).

Si bien se encuentra en un símbolo del sistema VS 2013:

> where rc.exe C:/Program Files (x86)/Windows Kits/8.1/bin/x64/rc.exe C:/Program Files (x86)/Windows Kits/8.1/bin/x86/rc.exe

y un símbolo del sistema VS 2017:

> where rc.exe C:/Program Files (x86)/Windows Kits/10/bin/10.0.15063.0/x64/rc.exe

Verificación del contenido de las PATH entorno PATH en varias indicaciones de comando VS:

  • Dentro de un símbolo del sistema VS 2013, PATH contiene

    C:/Program Files (x86)/Windows Kits/8.1/bin/x64

  • Dentro de un símbolo del sistema VS 2017, PATH contiene

    C:/Program Files (x86)/Windows Kits/10/bin/x64 C:/Program Files (x86)/Windows Kits/10/bin/10.0.15063.0/x64

  • Pero dentro de un símbolo del sistema VS 2015, PATH solo contiene

    C:/Program Files (x86)/Windows Kits/10/bin/x64

    que no contiene rc.exe .

Preguntas

  1. ¿Es este un problema conocido o es específico de mi sistema?

  2. ¿Qué podría instalar, desinstalar o modificar Windows 10 Creators Update en el sistema (quizás algo relacionado con los SDK de Windows) que desencadenaría este problema?

  3. ¿Cuál es una forma limpia de resolver esto?

Editar: componentes VS 2017 instalados:


  1. Ejecute su instalador en línea vs_community2017.exe.
  2. seleccione modificar su VS2017
  3. seleccione desarrollo de escritorio con C ++
  4. seleccione Windows 10 SDK (mi versión es 10.0.10586) e instálelo

Ejecute el símbolo del sistema VS2015:

> where rc > C:/Program Files (x86)/Windows Kits/10/bin/x64/rc.exe > C:/Program Files (x86)/Windows Kits/10/bin/x86/rc.exe

Parece que vs2017 por defecto instala el SDK más nuevo y sobrescribe las versiones anteriores.


Abra "C: / Archivos de programa (x86) / Microsoft Visual Studio 14.0 / Common7 / Tools / VsDevCmd.bat" en un editor de texto en modo administrador y cambie la línea

@if not "%WindowsSdkDir%" == "" @set PATH=%WindowsSdkDir%bin/x86;%PATH%

a

@if not "%WindowsSdkDir%" == "" @set PATH=%WindowsSdkDir%bin/x86;%WindowsSdkDir%bin/%WindowsSDKVersion%x86;%PATH%


Definitivamente no eres solo tú. Instalé VS2017 ayer y hacerlo parece haber producido el mismo problema de mi parte. No tengo una buena solución (esto debería informarse a Microsoft como un error), pero tengo una solución alternativa.

Pude copiar rc.exe y rc.dll de

C:/Program Files (x86)/Windows Kits/10/bin/10.0.15063.0/x64 to C:/Program Files (x86)/Windows Kits/10/bin/x86

Eso resolvió el problema para mí. Mi presentimiento es que se sobrescribe una clave de registro, pero no la he investigado lo suficiente como para estar seguro.


Especificar CMAKE_SYSTEM_VERSION=8.1 resolvió el problema para mí.


Para cualquiera que se quede atascado en esto, un conjunto de problemas en particular es:

  1. obtener una nueva PC con Windows 10
  2. instalar VS 2017 [*]
  3. desinstalar VS 2017 y
  4. instalar VS 2015

Si haces lo anterior,

parece que hay un error u otro comportamiento con el conjunto general de instaladores de Windows / VS.

Básicamente, parece que hay cuatro problemas que MSFT tiene que solucionar (a) a veces simplemente no instala rc.exe, (b) no instala rc.exe si "solo" pide las cosas de c ++, debe preguntar para todo (c) la tubería de desinstalación e instalación parece estar desordenada de varias maneras (d) incluso si instala aleatoriamente rc.exe por usted, olvida o ensucia la ruta.

: /

Larga historia tediosa corta, las soluciones parecen incluir uno o más de

  1. básicamente instale o reinstale 10.0.10011.16384 (pero solo ese, NO los dos posteriores)
  2. mire a su alrededor y vea si rc.exe es simple, directo, no existe . Si es así, instálelo (en algún lugar, en cualquier lugar)
  3. en VS, pensarías que puedes instalar "solo" las cosas de c ++, pero no . En la práctica, DEBE marcar sí a toda la web, bla, bla, cosas de desarrollo. Esto parece darle "más esperanza" de obtener rc.exe. Después de hacer esto, revise el punto 2, ya que es posible que aún no lo tenga.
  4. Después de hacer 2, luego 3 y probablemente 2 nuevamente, es probable que TODAVÍA no lo tengas en tu camino real. Me encantaría saber cuál es el "mejor y más natural" lugar para tenerlo en tu camino, pero esa parece ser una causa perdida. Simplemente empújalo en tu camino en algún lugar, en cualquier lugar.
  5. Cree un archivo cmake simple en alguna parte y pruébelo.

. . . . . .

[*] bien puede venir con VS 2017, y no olvides que VS 2017 puede instalarse molestamente con otra cosa, Unity, etc.


Pasé algún tiempo mirando esto en tres máquinas con Win10 Creators Edition y VS2010, VS2013, VS2015 y VS2017 instalados, donde funciona en dos máquinas y falla en la tercera. Todos tenían VS2015 Update 3 y todos deberían haberse instalado con las mismas opciones.

Ejecutando el siguiente archivo por lotes

C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64/vcvars64.bat

debe configurar el entorno correcto para el entorno VS2015 x64. Esto debería agregar

C:/Program Files (x86)/Windows Kits/10/bin/x64

al camino. Aquí es donde debe estar rc.exe . Sin embargo, en mi máquina defectuosa faltaba rc.exe desde aquí, pero existía en

C:/Program Files (x86)/Windows Kits/10/bin/10.0.15063.0/x64

Regresé y sentí que esto era un problema de configuración. Volví a ejecutar la configuración VS2015 Update 3 y le dije que agregara

Desarrollo web y de Windows -> Herramientas de desarrollo de aplicaciones universales de Windows -> Herramientas (1.4.1) y SDK de Windows 10 (10.0.14393)

esto causó que rc.exe y archivos relacionados aparecieran en

C:/Program Files (x86)/Windows Kits/10/bin/x64

Ejecutando rc -v en

C:/Program Files (x86)/Windows Kits/10/bin/10.0.15063.0/x64/rc.exe

y

C:/Program Files (x86)/Windows Kits/10/bin/x64/rc.exe

dio el mismo número de versión 10.0.10011.16384

No estoy seguro de por qué falta rc.exe en la instalación original, pero volver a ejecutar la instalación y agregar el otro SDK lo arregló por mí. Parece que

C:/Program Files (x86)/Windows Kits/10/bin/x64/rc.exe

debería ser el rc.exe predeterminado pero no fue configurado por una instalación previa.


Por alguna razón, el instalador de Herramientas integradas (1.4.1) y Windows 10 SDK (10.0.14393) no funcionó para mí:

  1. C:/Program Files (x86)/Windows Kits/10/bin/x86 se llenaron a mitad de la instalación (¡éxito!)
  2. ... luego despoblado (¡pena!)
  3. Y, finalmente, el instalador devolvió el error -2147023293 / 0x80048646 .

Sin embargo, el instalador "Windows 10 SDK (ver. 10.0.14393.795)" del SDK de Windows y el archivo del emulador funcionó: C:/Program Files (x86)/Windows Kits/10/bin/x86 se llena y permanece, incluido rc.exe .

Windows 7 x64, Visual Studio Professional 2015 Actualización 3.


Problema similar con VS2017 Community 15.4.5 con Windows Sdk versión 10.0.16299.0, pero solo para compilaciones a través de TeamCity; las compilaciones desde VS funcionan bien y también lo hace con MSBuild cuando se inicia desde un símbolo del sistema de desarrollador VS. Entonces, esto no responde exactamente la pregunta del OP, pero es muy similar y esta es una de las primeras coincidencias de búsqueda, así que la agregaré aquí.

Encontró una solución que no requiere modificar la instalación de ninguna manera (sin vinculación / copia, por lo que es menos propenso a errores y fácil de automatizar):

establezca la variable de entorno VisualStudioVersion en 15.0 .

Puede hacer esto globalmente usando la interfaz gráfica de usuario estándar de Windows para eso (ejemplo para Windows 10 here ), pero recomiendo encarecidamente que no interfiera con otras versiones de VS, además, no es un cambio que se automatice o verifique fácilmente en su código de compilación y, por lo tanto, es más difícil de reproducir en diferentes máquinas. Una mejor alternativa es establecer esto en la línea de comandos donde se ejecuta la compilación (cmd: set VisualStudioVersion=15.0 PS: $env:VisualStudioVersion = ''15.0'' en TeamCity: agregue el parámetro env.VisualStudioVersion ). Otra alternativa es pasar este directorio a MSBuild como una propiedad (pase /p:VisualStudioVersion=15.0 o en teamCity add system.VisualStudioVersion ).


Se encontró el mismo problema con Windows 10 15063.608 (Windows SDK 10.0.15063.0). La solución que funciona para mí es la creación de enlaces duros para las carpetas x64 y x86 del kit de Windows 10 como se muestra a continuación (use el símbolo del sistema con derechos de administrador):

mklink /J "C:/Program Files (x86)/Windows Kits/10/bin/x86" "C:/Program Files (x86)/Windows Kits/10/bin/10.0.15063.0/x86" mklink /J "C:/Program Files (x86)/Windows Kits/10/bin/x64" "C:/Program Files (x86)/Windows Kits/10/bin/10.0.15063.0/x64"

(antes de ejecutar estos comandos, simplemente cambie el nombre de las carpetas existentes de Windows Kits/10/bin/x64 y Windows Kits/10/bin/x86 ; parece que no están en uso.


Tuve exactamente el mismo problema. Varias versiones de Visual Studio, incluidas 2015 y 2017. Mi solución fue ejecutar el comando cmake desde el símbolo del sistema del desarrollador 2017 y especificar la versión de Visual Studio 2015 con:

cmake -G "Visual Studio 14 2015" ..