2017-07-22 1 views
0
  • version de Windows: Microsoft Windows [Version 10.0.14393]
  • MSBuild Version: Microsoft (R)-Buildmodul, Version 15.1.1012.6693
  • Le projet est écrit dans C.

Dans les *.vcxproj fichiers de ce projet, il y a beaucoup de code comme celui-ciMSBuild Raccourcir Configuration Managment Dans vcxproj-Files

<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> 
    [do some stuff] 
</ImportGroup> 

pour toutes les configurations, 'Debug|Win32', 'Release|Win32', 'Debug|x64', 'Release|x64'. Mais je vais avoir la même configuration pour toutes les combinaisons, donc je ne veux pas l'écrire 4 fois en rendant mon fichier de projet 3 fois plus long et moins lisible.

Existe-t-il un raccourci comme Condition="'$(Configuration)|$(Platform)'=='Any Configuration|Any Architecture'?

Répondre

1

La méthode standard consiste à utiliser 'property sheets'; plus concret: une feuille de propriétés avec les options communes qui est importée par toutes les combinaisons plateforme/configuration. Quelques raisons de choisir cette approche:

  • il répond exactement à votre « Je vais avoir la même configuration pour toutes les combinaisons, donc je ne veux pas écrire 4 fois faire mon dossier de projet 3 fois plus et moins lisible » exigence , et plus: il garde les options communes dans un seul fichier, qui peut également être repris par d'autres projets (ce qui est vraiment le point de vente numéro 1 si vous avez plusieurs projets et voulez les mêmes options)
  • il a un utilisateur prise en charge de l'interface pour l'édition (bien que ce ne soit pas un problème si vous voulez éditer manuellement le vcxproj pour l'ajouter)
  • il maintient la structure de projet standard intacte, donc permet toujours de per config uration et modifications par plate-forme si vous avez besoin de ces
  • feuilles de propriétés sont juste des fichiers msbuild comme un autre et en tant que tel peut importer d'autres fichiers afin que vous puissiez créer des hiérarchies avec eux, faire des choses comme avoir un fichier maître basé sur le type d'application (exe/dll) définit différents chemins de sortie et ainsi de suite
1

Vous pouvez supprimer l'attribut Condition et appliquer ImportGroup pour chaque configuration.

+0

C'est ainsi que je l'ai essayé hier et cela semble fonctionner. Bien que je pense que la réponse @stijn est la façon la plus "professionnelle" de le faire, et c'est pourquoi sa réponse a été acceptée; mais j'ai voté le vôtre de toute façon;) – user69453

+0

Merci! La réponse de Stijn est très élaborée. J'aurais marqué cela comme une réponse aussi! ;) Bon travail @stijn! –