4

Celui-ci peut être un peu étrange. J'ai une solution dans Visual Studio 2010 avec trois projets C++. Deux bibliothèques et une application exécutable. Deux configurations Dans une configuration, j'ai besoin de l'application exécutable pour avoir une dépendance de projet sur une bibliothèque, dans l'autre configuration j'ai besoin de l'application exécutable pour avoir une dépendance de projet sur une autre bibliothèque. Avec des détails, il existe une implémentation Direct3D9 dans la première bibliothèque et une implémentation OpenGL dans la deuxième bibliothèque. Le troisième projet est un harnais de test qui utilise la même interface pour les deux, la seule différence est la bibliothèque à laquelle il est lié. Deux configurations existent dans le projet de harnais de test, une pour chaque implémentation. Je ne peux pas faire en sorte que le projet de harnais de test dépende de chaque bibliothèque d'implémentation individuellement en fonction de la configuration active.Comment une dépendance de projet Visual Studio 2010 peut-elle être spécifique à la configuration?

Comment rendre les dépendances de projet spécifiques à la configuration?

Répondre

3

Le format de projet C++ msbuild? Si oui, vous devriez simplement pouvoir mettre une condition sur la référence. Référencez les deux projets, puis modifiez le fichier de projet et ajoutez une condition à chacun d'eux. Voici comment cela fonctionnerait dans un projet C#, ne sais pas si C++ est le même:

<ProjectReference Include="..\DirectXLib\DirectXLib.csproj" Condition=" '$(Configuration)' == 'DirectX' "> 
    <Project>{99999-9999-9999-9999-99999999999}</Project> 
    <Name>DirectXLib</Name> 
</ProjectReference> 
<ProjectReference Include="..\OpenGLLib\OpenGLLib.csproj" Condition=" '$(Configuration)' == 'OpenGL' "> 
    <Project>{99999-9999-9999-9999-99999999999}</Project> 
    <Name>OpenGLLib</Name> 
</ProjectReference> 
+0

Parfait, je pensais que cela allait nécessiter des modifications de projet non-IDE. J'ai été en mesure d'ajouter la référence via l'EDI puis de modifier manuellement les fichiers pour utiliser les conditions nécessaires. Merci mon pote. –

0

Je pense que le but du gestionnaire de configuration est juste pour ce que vous demandez, n'est-ce pas? Au niveau de la solution, vous spécifiez les configurations que vous souhaitez créer et, pour chaque configuration, vous pouvez spécifier les projets que vous souhaitez créer et dans quel ordre. Et dans les paramètres de chaque projet, vous pouvez spécifier quelles bibliothèques inclure et tout un tas d'autres choses que vous voulez faire.

+0

Le problème était que les dépendances de projet ne peuvent pas être spécifiques à la configuration, du moins pas via l'IDE de Visual Studio. –

0

Une astuce qui semble fonctionner à partir de l'IDE:

  • Que les deux bibliothèques ont également une configuration NON UTILISÉ;

  • Définissez le Type de configuration (dans Propriétés communes: Général: Projet par défaut) sur Application (.exe) pour les bibliothèques dans la configuration NOT_USED.

Cela va VS pense qu'il n'a pas de lib comme résultat de ces projets, et donc ne pas fournir une erreur de liaison.