2009-11-13 2 views
2

La version courte de ma question est comment puis-je modifier l'ordre de construction des projets dans ma solution sans être obligé de définir un projet comme une dépendance de l'autre?Visual Studio 2005 Commande de génération de projet sans utiliser les dépendances de projet

Dans ma solution, j'ai 2 projets:

1.) Un exécutable écrit en C
2.) Une bibliothèque statique contenant des tests unitaires en utilisant le cadre Cutest.

J'ai 4 configurations de construction:

1.) Debug - Je veux que l'exe en mode débogage. Le projet statique lib n'est pas sélectionné, il ne sera donc pas construit.
2.) Release - Je veux seulement l'exe en mode release. Le projet statique lib n'est pas sélectionné, il ne sera donc pas construit.
3.) Déboguer avec les tests unitaires - Vous voulez construire la lib statique, puis l'exe car cela dépend de la lib dans ce cas.
4.) Libération avec tests unitaires - Idem n ° 3, juste en version. Étant donné que l'exécutable dépend d'autres libs et dll qui ne sont pas dans la solution, tous ceux listés comme des dépendances supplémentaires dans les paramètres de l'éditeur de liens sont listés ci-dessous. Dans les configurations de construction de test unitaire, j'ai la bibliothèque statique également incluse dans la liste de dépendances de l'exécutable.

Maintenant, voici le frotter. La seule façon que j'ai trouvé jusqu'ici pour changer l'ordre de construction et m'assurer que la lib statique est construite avant l'exe est de faire un clic droit sur la solution et de sélectionner l'ordre de construction. Dans cette boîte de dialogue, il est dit que je dois utiliser l'onglet dépendances pour modifier l'ordre de construction. C'est logique. Toutefois, si je marque l'exécutable comme dépendant de la bibliothèque statique, il ajoute automatiquement la bibliothèque statique en tant que dépendante de l'éditeur de liens. C'est très bien pour les configs de construction de tests unitaires. Dans les configurations de construction de test non unitaires, cependant, il essaye de lier dans la lib statique qui, si j'ai fait un nettoyage avant la construction, a été supprimé et ne peut pas être lié parce que je ne le construis pas dans ces configs (et je ne le veux pas lié dans ces cas). Cela étant dit, y a-t-il un moyen de changer l'ordre de construction sans marquer les dépendances? Je voudrais définir l'ordre de construction pour les configs test de l'unité pour s'assurer que la lib statique a été construite en premier.

Répondre

3

Vous pouvez désactiver l'inclusion automatique des dépendances de la bibliothèque.

Dans votre page de propriétés de exe:

Linker -> Général -> Link Library Dépendances -> Non

Cela vous permet de spécifier les dépendances du projet et de construire ainsi l'ordre sans la bibliothèque statique étant liée à

+0

Merci beaucoup. Je n'avais pas remarqué ce réglage avant. Cela fonctionne parfaitement. –

+0

Comment puis-je trouver l'option Linker dans VS2013? – CamHart

1

Je voudrais jeter un oeil à NAnt. Il peut être possible de créer un script ant pour résoudre votre problème.

http://nant.sourceforge.net

+0

Je vois que NAnt serait une option, mais comme elle n'est pas utilisée actuellement dans mon équipe, elle forcerait le reste de l'équipe à l'installer si elle devait travailler sur ce projet plus tard. Je vais certainement y jeter un coup d'œil, car cela semble utile. –

0

'Les dépendances de configuration' peuvent être une réponse. Cela permettra de spécifier que lib est une dépendance de l'exécutable pour seulement la configuration où cela a du sens.

+0

Ce que vous suggérez est exactement ce que je voudrais, mais je n'ai pas vu un moyen de définir des dépendances entre projets dans VS par configuration. C'est pourquoi j'ai placé toutes les libs/dll sur Linker-> Input-> Dependency Additionnel pour chaque configuration. La suggestion de Soo Wei Tan ci-dessus fonctionne très bien dans cette configuration. –

Questions connexes