Je voudrais tout d'abord déterminer quelles sont les exigences nécessaires à la bibliothèque:
- Debug/Release
- support Unicode
- Et ainsi de suite ..
Avec qui est déterminé, vous pouvez alors créer des configurations pour chaque combinaison requise par vous-même ou d'autres utilisateurs de la bibliothèque. Lors de la compilation et de la liaison, il est très important de conserver des bibliothèques et un exécutable cohérents par rapport aux configurations utilisées, c'est-à-dire de ne pas mélanger la mise à jour & lors de la liaison. Je sais que sur la plate-forme Windows/VS, cela peut entraîner des problèmes de mémoire subtile si les librairies de version & de débogage sont mélangées dans un exécutable. Comme Brian l'a mentionné dans Visual Studio, il est préférable d'utiliser Configuration Manager pour configurer la manière dont vous voulez que chaque configuration soit créée. Par exemple, nos projets requièrent que les configurations suivantes soient disponibles en fonction de l'exécutable en cours de construction:
- Debug + Unicode
- Debug + ASCII
- sortie + Unicode
- sortie + ASCII
Les utilisateurs de ce projet particulier utiliser le Gestionnaire de configuration en fonction de leurs besoins exécutables avec le les configurations disponibles du projet. En ce qui concerne l'utilisation des macros, elles sont largement utilisées pour implémenter des décisions de temps de compilation pour des exigences comme si la version de débogage ou de libération d'une fonction doit être liée. Si vous utilisez VS, vous pouvez afficher l'attribut de définitions du pré-processeur pour voir comment les différentes macros sont définies, par ex. _DEBUG _RELEASE, voici comment les contrôles de configuration sont compilés.
Quelle plate-forme utilisez-vous pour compiler/lier vos projets?
EDIT: Extension de votre commentaire mis à jour ..
Si l'option Configuration Manager n'est pas disponible pour vous, alors je recommande d'utiliser les propriétés suivantes du projet:
- Linker ->Répertoires Bibliothèque supplémentaires ou Linker ->Entrée
Utiliser la macro $(ConfigurationName)
pour établir une liaison avec la configuration de bibliothèque appropriée, par ex. Déboguer/Relâcher.
$(ProjectDir)\..\third-party-prj\$(ConfigurationName)\third-party.lib
- Événements Construire ou construction faite sur commande Étape propriété de configuration
Exécuter une copie du fichier de bibliothèque requise (s) du projet dépend avant (ou après) la construction survenant.
xcopy $(ProjectDir)\..\third-party-prj\$(ConfigurationName)\third-party.dll $(IntDir)
Le $(ProjectDir)
macro sera remplacée par l'emplacement du projet en cours et provoque l'opération de se produire par rapport au projet en cours. La macro $(ConfigurationName)
sera remplacée par la configuration actuellement sélectionnée (Debug
ou Release
par défaut) qui permet de copier les éléments corrects en fonction de la configuration en cours de construction. Si vous utilisez une convention de dénomination régulière pour vos configurations de projet, cela vous aidera, car vous pouvez utiliser la macro $(ConfigurationName)
, sinon vous pouvez simplement utiliser une chaîne fixe.