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.
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).
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".
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
.
Est-ce un problème connu ou est-ce spécifique à mon système?
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?
Quel est un moyen propre à résoudre ce problème?
Edit: Composants VS 2017 installés:
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.
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.
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.
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:
C:\Program Files (x86)\Windows Kits\10\bin\x86
a été rempli à mi-installation (succès!)-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.
Spécifier CMAKE_SYSTEM_VERSION=8.1
a résolu le problème pour moi.
Pour ceux qui restent bloqués là-dessus, un ensemble de problèmes particulier est:
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
. . . . . .
[*] cela peut venir avec VS 2017, et n'oubliez pas que VS 2017 peut être ennuyeux de s'installer avec autre chose, Unity, etc.
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.
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
).
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%
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" ..
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é.