La construction projet de C++ sur un PC avec Windows SDK 7.1 mais sans VS2010
J'ai un projet C++ (une sorte de console 32-bits le montage de dossier) développé dans VS2010, qui s'appuie très bien sur mon PC (Windows 7 32-bit). Mon PC a kit de développement Microsoft 7.0 A installé, ce qui je pense est livré avec VS2010.
J'essaie de construire le projet sur un serveur de build, qui n'ont pas de Visual Studio est installé uniquement Microsoft SDK 7.1 est présente.
J'essaie de construire le projet avec l'aide de msbuild (ce qui finira par devenir la tâche de TeamCity runner), et sur le serveur de build je reçois des messages d'erreur suivants (le journal détaillé est fourni):
Project "E:\win\core.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
Building solution configuration "Debug|Win32".
Project "E:\win\core.sln" (1) is building "E:\win\core_unittests.vcxproj" (2) on node 1 (default targets).
Project "E:\win\core_unittests.vcxproj" (2) is building "E:\cpptest\win\cpptest.vcxproj" (3) on node 1 (default targets).
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.Targets(847,9): warning MSB3644: The reference assemblies for framework ".NETFramework,Version=v4.0" were not found. To resolve this, install the SDK or Targeting Pack for this framework version or retarget your application to a version of the framework for which you have the SDK or Targeting Pack installed. Note that assemblies will be resolved from the Global Assembly Cache (GAC) and will be used in place of reference assemblies. Therefore your assembly may not be correctly targeted for the framework you intend. [E:\cpptest\win\cpptest.vcxproj]
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(297,5): warning MSB8003: Could not find WindowsSDKDir variable from the registry. TargetFrameworkVersion or PlatformToolset may be set to an invalid version number. [E:\win\cpptest.vcxproj]
InitializeBuildStatus:
Touching "E:\cpptest\win\..\..\..\out\Debug\cpptest\cpptest.unsuccessfulbuild".
ClCompile:
C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\CL.exe /c /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _LIB /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MTd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"E:\cpptest\win\..\..\..\out\Debug\cpptest\\" /Fd"E:\cpptest\win\..\..\..\out\Debug\cpptest\vc100.pdb" /Gd /TP /analyze- /errorReport:queue ../missing.cpp
missing.cpp
e:\cpptest\missing.cpp(36): fatal error C1083: Cannot open include file: 'windows.h': No such file or directory [E:\cpptest\win\cpptest.vcxproj]
Je suppose que le problème est lié à l'incapacité de msbuild pour trouver des kit de développement Microsoft, qui est installé dans "E:\Program Files\Microsoft SDKs\Windows\v7.1"
.
Il y a quelques conseils comment gérer ce problème disponible sur le Web:
- De copier une partie du registre en vertu de l'
HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1
àHKCU
(voir WindowsSdkDir n'est pas définie correctement dans Visual Studio 2008?). Je n'ai pas essayé cette solution de contournement, car comme il a l'air trop moche, et que le processus est exécuté avec le SYSTÈME d'identification de compte. - Passer
WindowsSDKDir
comme un des paramètres supplémentaires pour MSBuild (comme proposé dans TeamCity et MSBuild Bizarreries #1). - Peaufiner
VCProjectEngine.dll.config.xml
comme proposé dans le réponse à Inclure les Chemins de Recherche dans TeamCity construire des Configurations (je n'ai pas trouvé ce fichier sur le PC avec Windows SDK). - Changement de la plate-forme d'outils dans les propriétés du projet proposé dans le la réponse à WindowsSdkDir n'est pas définie correctement dans Visual Studio 2010 (je doute que cela va les aider, parce que mon PC ne dispose pas du SDK Windows 7.1 installé).
Fait lors de la compilation avec CL.EXE
tout va bien (parce que j'ai INCLUDE
et LIB
variables définies), ce serait une solution pour forcer msbuild d'utilisation/passer les variables d'environnement...
Il y a des problèmes similaires:
- "Les différences entre la construction sur une machine avec VS2010 installé sur une machine avec le SDK 7.1 installé" mais pour .Projets NET.
- Erronée du SDK Windows x64 Compilation d'Avertissement (bâtiment projet de 32 bits pour 64 bits plate-forme).
De toute façon quelqu'un a réussi avec la construction de Visual C++ 2010 projets sur un PC avec Windows SDK installé?
Vous devez vous connecter pour publier un commentaire.
J'ai enfin trouvé une sorte de pratique et de sens de solution de contournement pour le problème - à l'intérieur de "Peut-on construire *.vcxproj(projet c++) à l'aide de MSBuild 4.0 sans l'installation de Visual Studio 2010?".
En bref: j'ai de spécifier explicitement la Plate-forme d'Outils lors de la construction de la solution sur un PC sans VS2010. La commande ressemblera à:
Vous aurez probablement besoin d'aller même façon, si votre projet a
v100
ouv90
spécifié en tant que Plate-forme d'Outils.Et d'un soupçon de TeamCity est amateurs de, en exécutant le serveur sur un PC avec un seul kit de développement logiciel Windows installé.
Au lieu de modifier toutes les étapes de génération, il suffit de spécifier la Plate-forme d'Outils de l'agent de propriétés.
Pour faire ajouter la ligne suivante à
?:\TeamCity\buildAgent\conf\buildAgent.properties
:Bâtiment heureux! 🙂
mspdb100.dll
à%PATH%
.Vous pouvez également ajouter ce nœud & valeur de registre (correct avec votre installation, dirs & win version 32/64).
---begin .fichier reg---
---fin .fichier reg---
en raison de script MSBuild
%ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets\Windows7.1SDK\Microsoft.Cpp.Win32.Windows7.1SDK.props" recherche pour VSInstallDir.