[NOTE: Cette question est similaire mais pas la même que this one.]Comment passer toutes les "macros" de Visual Studio 2008 au script Python?
Visual Studio définit plusieurs dizaines de "macros" qui sont une sorte de simuler des variables d'environnement (sans aucun lien avec C++ macros) qui contiennent informations sur la construction en cours. Exemples:
ConfigurationName Release TargetPath D:\work\foo\win\Release\foo.exe VCInstallDir C:\ProgramFiles\Microsoft Visual Studio 9.0\VC\
Voici l'ensemble complet de 43 macros intégrées que je vois (le vôtre peut varier en fonction de la version de VS que vous utilisez et quels outils vous ont permis):
ConfigurationName IntDir RootNamespace TargetFileName DevEnvDir OutDir SafeInputName TargetFramework FrameworkDir ParentName SafeParentName TargetName FrameworkSDKDir PlatformName SafeRootNamespace TargetPath FrameworkVersion ProjectDir SolutionDir VCInstallDir FxCopDir ProjectExt SolutionExt VSInstallDir InputDir ProjectFileName SolutionFileName WebDeployPath InputExt ProjectName SolutionName WebDeployRoot InputFileName ProjectPath SolutionPath WindowsSdkDir InputName References TargetDir WindowsSdkDirIA64 InputPath RemoteMachine TargetExt
Parmi ceux-ci, seulement quatre (FrameworkDir
, FrameworkSDKDir
, VCInstallDir
et VSInstallDir
) sont définis dans l'environnement utilisé pour les événements de construction. Comme le mentionne Brian, des macros définies par l'utilisateur peuvent être définies de manière à être définies dans l'environnement dans lequel les tâches de construction s'exécutent. Mon problème est avec les macros intégrées. J'utilise un événement Visual Studio Post-Build pour exécuter un script Python dans le cadre de mon processus de construction. Je voudrais passer l'ensemble des macros (intégrées et définies par l'utilisateur) à mon script dans l'environnement mais je ne sais pas comment. Dans mon script, je peux accéder aux variables d'environnement habituelles (par exemple, Path, SystemRoot) mais PAS ces "Macros". Tout ce que je peux faire maintenant, c'est de les passer un par un en tant qu'options nommées que je traite ensuite dans mon script. Par exemple, voici ce que mon post-construction ligne de commande de l'événement ressemble à:
postbuild.py --t="$(TargetPath)" --c="$(ConfigurationName)"
En plus d'être une douleur dans le cou, il y a une limite sur la taille de post-construction ligne de commande de l'événement, donc je ne peux pas passer des douzaines de macros en utilisant cette méthode même si je le voulais parce que la ligne de commande est tronquée. Est-ce que quelqu'un sait s'il existe un moyen de passer l'ensemble des noms et des valeurs de Macro à une commande qui ne nécessite pas de passer à MSBuild (qui n'est pas disponible pour VC++ natif) ou à d'autres builds? outil?
Bonne idée, mais il existe une limite à la longueur d'une ligne de commande pouvant être appelée à partir d'un événement de génération VisualStudio. C'est quelque chose comme 128 ou 256 caractères. Bien trop court pour appeler N scripts où N = #macros (environ 43 builtins plus tout défini par l'utilisateur.) – jwfearn