2010-04-08 5 views
1

J'ai une solution qui contient plusieurs projets. Certains de ces projets partagent des fichiers sources. J'ai mis en place mon arbre de projet pour que les projets qui partagent les fichiers sources soient ensemble. Mon problème est que lorsque je fais un nettoyage et que je compile les fichiers sources partagés, je suis recompilé pour chaque projet, pas seulement le premier qui les utilise. Le résultat est que la construction initiale prend plus de temps qu'elle ne devrait et je dois construire plus d'une fois pour que toutes les dépendances soient satisfaites (des re-liens sont nécessaires.) Le projet est un port d'un projet gcc qui utilise une série de make fichiers pour effectuer la construction. Les fichiers make ne répètent pas les compiles. Est-il possible de gérer la situation ci-dessus afin que les dépendances sont satisfaites dans Visual Studio comme on pourrait s'y attendre? Le problème est-il dû à une dépendance entre le fichier source et les fichiers .idb et .pdb?Comment utiliser les mêmes fichiers obj dans différents projets dans la même solution

Mise à jour: Ce dont j'ai vraiment besoin, c'est d'un moyen de dire à VS d'effectuer un re-lien sur les mêmes fichiers obj avec différents noms DLL et LIB. Je peux obtenir ce travail en incluant des fichiers .obj dans les projets de re-link, mais je n'ai pas réussi à comprendre comment créer des versions de débogage/release. Dans les sections des fichiers de projet, le $ (IntDir) ne semble pas être analysé. Alors ...

Dans project1

fichier1.c lien fichier2.c de file3.c dans dll1.dll, dll1.lib

puis dans le projet 2 les fichiers objets des project1 se relier à nouveau seulement cette fois dans dll2.dll, dll2.lib

projet3 même chose.

J'ai posté cela sur un forum MS aussi et n'ont pas encore reçu de réponse.

+0

Pour VS 2010 (versions complète et Express), voir ma réponse à [Qu'est-ce que les références de projet Visual Studio?] (Http://stackoverflow.com/a/23524630/269126) et ce guide MSDN: [Procédure pas à pas: Création et utilisation d'une bibliothèque statique (C++)] (http://msdn.microsoft.com/en-us/library/ms235627 (v = vs.100) .aspx) – Lumi

Répondre

1

Si vous pouvez réorganiser le code pour ce faire, générez les fichiers .obj partagés dans un projet de bibliothèque, puis vous pouvez lier avec cette bibliothèque à partir des projets dépendants. C'est la seule façon "propre" que je puisse envisager pour résoudre le problème - tout ce que je peux penser à faire est de "combattre" ou de "tromper" le studio visuel, ce qui est généralement une mauvaise idée.

+0

J'avais pensé à cela mais depuis que je fais un port d'un projet open source existant J'essayais d'imiter autant que possible le système 'make'. – Steve

+0

En outre, je peux inclure les fichiers .obj en tant que fichiers de projet sans aucun autre fichier source et cela fonctionne très bien. Le seul problème est qu'il ne semble pas y avoir moyen de spécifier les versions 'Debug' ou 'Release'. En d'autres termes, la section a apparemment besoin du chemin relatif codé en dur. – Steve

Questions connexes