web-dev-qa-db-fra.com

rc.exe n'est plus trouvé dans l'invite de commande VS 2015

Je viens d'installer Windows 10 Creators Update (version 10.0.15063).

J'ai plusieurs versions de Visual Studio installées (2012, 2013, 2015 et 2017). J'ai installé VS 2017 il y a seulement quelques semaines.

Problème

CMake (version 3.8.1) ne trouve plus le compilateur C/C++ lorsqu'il est exécuté dans une "invite de commande native VS2015 x64" (il ne - fonctionne fonctionne correctement lorsqu'il est exécuté dans une invite de commande VS 2017).

La reproduction

Contenu de CMakeLists.txt:

project (test)
add_executable (test test.cpp)

(Le contenu de test.cpp n'est pas pertinent.)

Invocation CMake, dans une invite de commande native VS2015 x64:

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

CMake sortie:

-- 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".

Une analyse

La raison de l'échec est claire en regardant 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 (Compilateur de ressources) introuvable. En effet, dans la même invite de commande VS 2015:

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

Alors que est trouvé dans une invite de commande de 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

et une invite de commande VS 2017:

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

Vérification du contenu des variables d'environnement PATH dans diverses invites de commande VS:

  • Dans une invite de commande VS 2013, PATH contient

    C:\Program Files (x86)\Windows Kits\8.1\bin\x64
    
  • Dans une invite VS 2017, l'invite, PATH, contient

    C:\Program Files (x86)\Windows Kits\10\bin\x64
    C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64
    
  • Mais à l'intérieur d'une commande VS 2015, l'invite, PATH, ne contient que

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

    qui ne contient pas rc.exe.

Des questions

  1. Est-ce un problème connu ou est-ce spécifique à mon système?

  2. Qu'est-ce que Windows 10 Creators Update pourrait éventuellement installer, désinstaller ou modifier dans le système (peut-être quelque chose lié aux kits de développement logiciel (SDK) Windows) susceptible de provoquer ce problème?

  3. Quel est un moyen propre à résoudre ce problème?

Edit: Composants VS 2017 installés:

 VS 2017 components installed

55

A passé quelque temps à regarder cela sur trois machines sur lesquelles Win10 Creators Edition et VS2010, VS2013, VS2015 et VS2017 sont installés, où cela fonctionne sur deux machines et échoue sur la troisième. Tous avaient VS2015 Update 3 et auraient tous dû être installés avec les mêmes options.

Exécuter le fichier batch suivant

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

devez configurer l'environnement correct pour l'environnement VS2015 x64. Cela devrait ajouter

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

à la voie. C'est là que rc.exe devrait être. Cependant, sur ma machine en panne, rc.exe était absent, mais il existait déjà dans

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

Je suis revenu en arrière et sentant qu'il s'agissait d'un problème d'installation, j'ai relancé l'installation de VS2015 Update 3 et je lui ai dit d'ajouter

Développement Windows et Web -> Outils de développement d'applications Windows universelles -> Outils (1.4.1) et Windows 10 SDK (10.0.14393)

cela a provoqué l'apparition de rc.exe et des fichiers associés dans

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

Lancer rc -v on 

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

et

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

a donné le même numéro de version 10.0.10011.16384

Vous ne savez pas pourquoi rc.exe était absent de l'installation d'origine, mais la réexécution de l'installation et l'ajout de l'autre SDK ont corrigé le problème. Ça ressemble à 

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

devrait être la valeur par défaut rc.exe mais il n’a pas été configuré par une installation précédente.

70
DaveCleland

Ce n'est certainement pas juste toi. J'ai installé VS2017 hier et cela semble avoir produit le même problème de mon côté. Je n'ai pas de bonne solution (cela devrait être signalé à Microsoft comme un bug), mais j'ai une solution de contournement.

J'ai pu copier rc.exe et rc.dll à partir de 

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

Cela a résolu le problème pour moi. Mon impression est que c'est une clé de registre en train d'être écrasée, mais je n'y ai pas suffisamment exploré pour en être sûr.

11
Falcon

A rencontré le même problème avec Windows 10 15063.608 (SDK Windows 10.0.15063.0). La solution qui fonctionne pour moi est la création de liens physiques pour les dossiers binaires du kit Windows 10 x64 et x86, comme indiqué ci-dessous (utilisez la commande Invite avec droits d'administrateur):

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"

(avant d'exécuter ces commandes, il suffit de renommer les dossiers Windows Kits\10\bin\x64 et Windows Kits\10\bin\x86 existants - il semble qu'ils ne soient pas utilisés.

5
Victoria Zhislina

Pour une raison quelconque, le programme d'installation intégré Outils (1.4.1) et Windows 10 SDK (10.0.14393) ne fonctionnait pas pour moi:

  1. C:\Program Files (x86)\Windows Kits\10\bin\x86 a été rempli à mi-installation (succès!)
  2. ... puis dépeuplé (chagrin!)
  3. Et finalement, le programme d'installation a renvoyé l'erreur -2147023293/0x80048646.

Le programme d'installation "Windows 10 SDK (version 10.0.14393.795)" à partir du le kit de développement logiciel (SDK) et l'archive d'émulateur a bien fonctionné: C:\Program Files (x86)\Windows Kits\10\bin\x86 obtient et reste rempli, y compris rc.exe.

Windows 7 x64, Visual Studio Professional 2015 Update 3.

3
genpfault

Spécifier CMAKE_SYSTEM_VERSION=8.1 a résolu le problème pour moi.

2
Lars Bilke

Pour ceux qui restent bloqués là-dessus, un ensemble de problèmes particulier est:

  1. obtenir un nouveau Windows 10 PC
  2. installer VS 2017 [*]
  3. désinstaller VS 2017 et
  4. installer VS 2015

Si vous faites ce qui précède,

il semble qu'il y ait un bogue ou un autre comportement avec l'ensemble des programmes d'installation Windows/VS.

Il y a fondamentalement quatre problèmes que MSFT doit résoudre (a) parfois, il n’installe tout simplement pas rc.exe, (b) il n’installe pas rc.exe si vous ne faites que demander le contenu c ++, vous devez le demander. pour tout (c) le pipeline de désinstallation-installation semble être tout bousillé de différentes manières (d) même s'il installe aléatoirement rc.exe pour vous, il oublie ou gâche le chemin.

: /

Longue histoire fastidieuse, les solutions semblent inclure un ou plusieurs de

  1. essentiellement installer ou ré-installer 10.0.10011.16384 (mais seulement celui-là, PAS les deux derniers)
  2. regardez autour de vous et voyez si rc.exe est simple, carrément, pas là . Si oui, installez-le (quelque part, n'importe où)
  3. dans VS, on pourrait penser que vous pouvez installer "juste" les éléments c ++, mais non . En pratique, vous DEVEZ cocher «oui» pour tout ce qui concerne le développement du Web, du bla bla. Cela semble vous donner "plus d'espoir" d'obtenir rc.exe. Après cela, revisitez le point 2, car vous ne l’auriez peut-être toujours pas.
  4. Après avoir fait 2 puis 3 et probablement 2 encore, vous ne l'aurez probablement PAS TOUJOURS dans votre chemin réel. J'aimerais savoir quel est le "meilleur, naturel" endroit pour l'avoir sur votre chemin, mais cela semble être une cause perdue. Il suffit de le pousser sur votre chemin quelque part, n'importe où. 
  5. Créez un fichier cmake simple quelque part - et testez-le.

. . . . . .

[*] cela peut venir avec VS 2017, et n'oubliez pas que VS 2017 peut être ennuyeux de s'installer avec autre chose, Unity, etc.

1
Fattie
  1. lancez votre installateur en ligne vs_community2017.exe.
  2. sélectionnez modifier votre VS2017
  3. sélectionnez le développement de bureau avec C++
  4. sélectionnez Windows 10 SDK (ma version est 10.0.10586) et installez-le.

Exécutez l'invite de commande 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

Il semble que vs2017 default installe le dernier SDK et écrase les anciennes versions.

1
yezhiyun

Problème similaire avec VS2017 Community 15.4.5 avec Windows Sdk version 10.0.16299.0, mais uniquement pour les versions via TeamCity; les constructions à partir de VS fonctionnent correctement, de même que la construction avec MSBuild lors du démarrage à partir d'une invite de commande de développeur VS. Donc, cela ne répond pas exactement à la question du PO, mais est tellement similaire et c'est l'un des premiers résultats de recherche, je vais donc l'ajouter ici.

Nous avons trouvé une solution qui not ne nécessite aucune modification de l'installation (aucune liaison/copie, donc moins sujette aux erreurs et facile à automatiser):

définissez la variable d'environnement VisualStudioVersion sur 15.0.

Vous pouvez le faire globalement en utilisant l'interface graphique standard de Windows (exemple pour Windows 10 ici ), mais je le déconseille vivement, car cela pourrait interférer avec d'autres versions de VS, de plus ce n'est pas un changement facilement automatisé ni archivé dans votre code de construction et donc plus difficile à reproduire sur d’autres machines. Une meilleure alternative consiste à définir cela dans la ligne de commande où la construction est exécutée (cmd: set VisualStudioVersion=15.0 PS: $env:VisualStudioVersion = '15.0' dans TeamCity: add env.VisualStudioVersion Parameter). Une autre alternative consiste à transmettre ce répertoire à MSBuild en tant que propriété (passez /p:VisualStudioVersion=15.0 ou dans teamCity add system.VisualStudioVersion).

1
stijn

Ouvrez "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat" dans un éditeur de texte en mode administrateur et modifiez La ligne. 

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

à

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

0
N3UR0CHR0M

J'ai eu exactement le même problème. Plusieurs versions de Visual studio, y compris 2015 et 2017 . Ma solution consistait à exécuter la commande cmake à partir de l'invite de commande de développeur 2017 et à spécifier la version 2015 de Visual Studio avec:

cmake -G "Visual Studio 14 2015" ..

0
kwes

exécuter la commande suivante sur la commande native Visual Studio 64/86 Invite à définir la version correcte Pour vs2015 -% comspec%/k "C:\Fichiers de programme (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" AMD64 8.1% de comspec %/k "C:\Fichiers de programme (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 8.1

exécuter la commande suivante dans l'invite de commande Visual Studio 64/86 native pour définir la version correcte Pour vs2013 -% comspec%/k "C:\Fichiers de programme (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" AMD64 7.1% comspec%/k "C:\Fichiers de programme (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86 7.1

Cela définira le chemin correct et s'exécutera sans problème. J'ai testé cela sur WIN10 avec VS2013, VS2015, VS2017 installé.

0
Manoj U