7
votes

Comment avoir différentes dépendances du projet pour chaque configuration de projet?

J'aimerais avoir différentes dépendances du projet en fonction de la configuration du projet que je suis en train de construire.

Par exemple, je ne veux pas construire et lier le somestLib.vcproj dans la configuration de version, mais j'aimerais construire et mettre en relation avec le débogage.

une solution, cette solution fonctionne, consiste à utiliser des macros de compilation conditionnelle: xxx

mais dans ce cas, le débogueur et l'intellisense ne fonctionnent pas pour SomeestLib.
Y a-t-il un piratage .sln ou .vcproj que je pourrais utiliser?
Merci.


0 commentaires

6 Réponses :


0
votes

Dans Visual Studio, chaque configuration de construction conserve sa propre liste de propriétés pour votre projet. Ajoutez simplement votre liber à la configuration de votre liberté. Il suffit d'ajouter à "toutes les configurations"


1 commentaires

Je pose des questions sur un projet qui fait partie de la solution, pas une libération externe. Je suis au courant de l'option que vous suggérez. Ce que je voudrais réaliser est de marquer une dépendance du projet inactive dans certaines configurations de solution.



0
votes

Cliquez avec le bouton droit sur votre solution et sélectionnez Propriétés. La page de la propriété de la solution apparaît ..

Dans la page droite Sélectionnez Propriétés de configuration >>> Configuration

Ici, vous pouvez sélectionner la configuration de construction pour le débogage, la sortie et tous les types de construction en cochant la case à cocher étiquetée comme construction.


3 commentaires

Si je comprends bien, décochez un cochérance d'un projet ici l'empêchera d'être construite. Mais si ce projet non coché est marqué comme une dépendance du projet, le linker se plaindre (somestlib.lib.lib.).)


Pas si c'est déjà construit et que l'assemblage est présent dans le même répertoire. Depuis lorsque vous avez construit un projet, toutes ses dépendances autres que ceux installés dans GAC sont copiés dans le dossier privé de cette assemblée. Cependant, étant donné que cela dépend de l'autre assemblée et une modification est faite à la source de cette assemblée, il s'agira d'abord toutes les dépendances.


Ok, mais je ne veux même pas construire la même fois dans la configuration de libération, c'est tout le point. :)



3
votes

Il est possible d'éteindre la propriété Linker / General / Link Bibliothèque Propriété dans le projet dépendant et placez la bibliothèque dans des entrées de liaison dans des configurations pertinentes.

Il fait que les références du projet sont moins utiles, mais sont fonctionnelles.


0 commentaires

7
votes

Après avoir cherché à Google pendant des jours, j'ai finalement abandonné la recherche d'une solution à ce problème et a fait souffler un développeur VS, qui m'a donné la solution de contournement pour ce problème (en fait, j'ai essayé un bajillion différent de la mienne pour le trouver) .

Apparemment, l'EDI n'est pas suffisamment intelligent pour comprendre que vous avez désactivé la construction d'une bibliothèque particulière sous une configuration donnée et de ne pas ajouter la sortie de ce projet à la ligne de commande de liaison pour les projets qui en dépendent. Je suis sûr que vous en êtes au courant.

Cependant, comme il suffit de coller la ligne de sortie du projet de bibliothèque dans la ligne de commande du projet dépendant, définissez la ligne de sortie en "" "ne donnera rien à ajouter à la ligne de commande de liaison sur les projets à charge!

Espérons que ce problème sera corrigé dans Visual Studio à l'avenir. Je reste optimiste, car c'est mon IDE préféré, et je suis toujours impressionné par les fonctionnalités qu'elle soutient. Cependant, certains des threads de VS aident que j'ai vu dire que ce bogue est "par conception", alors peut-être qu'ils ne le feront pas correctement. Cela semble assez facile à faire, cependant.

Quoi qu'il en soit, résumer:

  • Cliquez avec le bouton droit de la souris sur votre projet de bibliothèque dans l'explorateur de la solution et cliquez sur "Propriétés".
  • Basculez vers la paire "Configuration / Platform" que votre projet de bibliothèque ne construit pas.
  • Sélectionnez "Propriétés de configuration -> Bibliothécaire -> Général".
  • pour "fichier de sortie", type "" (qui est des parens ouverts, de l'espace, de parens fermés).
  • Cliquez sur OK.

    Veuillez noter que cette solution de contournement vous donnera des erreurs si vous créez ou nettoyez le projet de bibliothèque désactivée. Si vous construisez simplement votre solution, il sera ignoré sur les configurations désactivées. Vous ne recevrez donc pas d'erreurs.

    J'espère que cela vous aide!

    Daniel


1 commentaires

Merci, c'est génial! Une autre chose: si la dépendance que vous connectez se trouve être un fichier .dll, vous pouvez également définir le nom de la bibliothèque d'importation sur "" et ce sera ignoré. Cette option est sous Linker-> Advanced-> Bibliothèque d'importation.



1
votes

Définissez le type de configuration sur utilitaire au lieu d'applications / bibliothèques dans les propriétés du projet -> Général ..


0 commentaires

0
votes

Dans le projet principal, accédez à Propriétés de la configuration -> Linker -> Entrée, dans la section intitulée "Ignorer une bibliothèque spécifique" Ajoutez la lib que vous voulez éceptionnar, par exemple: .lib. Faites-le à nouveau pour l'autre configuration, sauf ignorer une lib / dll différente.

Enfin, si vous ne voulez pas que chaque bâtiment de projet pour les deux configurations, cliquez avec le bouton droit de la souris sur la solution -> Dépendances du projet -> [Sélectionnez le projet principal / haut niveau] -> Décochez le projet que vous ne voulez pas construire / ignoré .

Cette méthode présente l'avantage que vous pouvez toujours créer manuellement chaque projet si vous le souhaitez, mais peut changer de configurations et construire / utiliser uniquement la lib / dll que vous voulez.


0 commentaires