Comment trouver Windows SDK SetEnv.cmd / SetEnv.cmd Ne fonctionne pas correctement

Nous avons une Équipe de la Ville de Serveur de génération d'exécution et que vous voulez compiler un projet Visual C++. Jusqu'à présent, ce serait facile, depuis que je suis à l'installation de Windows Agent de Build avec le SDK de Windows, mais nous n'avons pas une solution ou d'un fichier de projet.

Les fichiers de projet sont plutôt créé avec CMake. CMake semble être un peu stupide (ne peut pas générer de Solution lorsque Visual Studio n'est pas installé), mais avec quelques astuces, je pourrais l'obtenir pour le faire. La solution peut alors être construit avec MSBuild.

Et c'est là le problème. Pour que cela fonctionne automatiquement, j'ai besoin d'appeler le Windows SDK SetEnv.cmd. Et je n'arrive pas à trouver automatiquement. C'est dans le sous-répertoire bin du SDK de Windows, mais ni ben ni les racines sont dans le chemin, et la %mssdk% variable d'environnement est définie par la SetEnv.cmd et n'est pas disponible auparavant!

L'ajout du kit de développement logiciel Windows\bin dir pour le CHEMIN mène à la SetEnv.cmd ne fonctionne plus (il se termine avec un message comme The x86 compilers are not currently installed et Jump target Set_x86 not found.

Le début d'un lien de menu de l'appel de la SetEnv.cmd avec le SDK de Windows dir comme répertoire de travail à la place. Mais si j'ajoute le répertoire racine du CHEMIN d'accès, Bin\SetEnv.cmd n'est pas disponible.

Comment puis-je trouver SetEnv.cmd automatiquement? Même en mettant une variable d'environnement pour le chemin d'accès complet de la setenv.cmd ne fonctionne pas, et quand je définis %mssdk% car le sdk dir, appel %mssdk%\bin\SetEnv ne fonctionne pas ainsi. J'ai aussi essayé de définir %mssdk%, puis des cd %mssdk%, puis de l'appel bin\SetEnv. Aussi les compilateurs ne trouve pas dans tous ces cas. Il ne fonctionnera pas non plus si je manuellement cd à la racine ou bin dir sur une ligne de commande, et ensuite appeler SetEnv.cmd...

Le menu démarrer lien fonctionne très bien.

Pour la petite histoire, ma solution pour l'instant, aussi étrange soit-il, est le suivant:

J'ai créé un fichier MSBuild qui crée le fichier de solution avec CMake sur la ligne de commande, puis appelle à la création de la solution avec une tâche MSBuild. MSBuild fichier peut être facilement construit à partir de TeamCity, si j'ai besoin de quelques astuces supplémentaires pour satisfaire CMake est stupide à la recherche pour le compilateur, mais je ne vais pas l'appeler chose. Pas vraiment satisfaisant, mais il fonctionne.

OriginalL'auteur OregonGhost | 2009-05-20