2009-12-08 8 views
4

Je suis en train de migrer notre projet VC++ de Visual Studio 2005 (VC8) vers Visual Studio 2008 (VC9). Certains projets de la solution ont des chemins vers des bibliothèques tierces dans le champ "Additional Library Directories" des paramètres du projet. Les chemins ressemblent à ceci:
.. \ SomeLibrary \ Lib \ VC9 \ x86Compilation conditionnelle selon la version du compilateur VC++

Il serait vraiment utile si je pouvais utiliser l'une des « page de propriétés Macros » de Visual Studio pour remplacer la version du compilateur, dans beaucoup de la même manière que je peux utiliser $ (ConfigurationName) pour remplacer "Debug" ou "Release". Quelque chose comme ce qui suit serait parfait:
.. \ SomeLibrary \ Lib \ $ (CompilerVersion) \ x86

Malheureusement, je ne peux pas trouver une macro appropriée.

Veuillez noter que lorsque je dis «macro», je fais référence aux «macros de pages de propriétés» de Visual Studio, et non aux macros de préprocesseur C/C++. Autant que je sache, vous ne pouvez pas utiliser les directives du préprocesseur dans les paramètres du projet.

Est-ce que quelqu'un connaît un moyen de faire cela?

+0

Cette question/réponse concerne un problème différent. Ma question concerne les macros de page de propriétés de Visual Studio. – Hoppy

Répondre

2

Vous pouvez utiliser la page de propriétés macros $ (PlatformToolsetVersion) ou $ (PlatformToolset) Pour vC++ 2012, f Par exemple, $ (PlatformToolsetVersion) se résout à "110" et $ (PlatformToolset) se résout à "v110". Donc, ajouter "vc $ (PlatformToolsetVersion)" à votre chemin ajouterait "vc110" sous vc11 ou "vc90" sous vc9.

+0

Je ne sais pas si c'était disponible dans VS2005, mais je travaille avec v90/v100/v110 maintenant, donc c'est parfait. Il a juste fallu 4 ans pour obtenir la réponse :) – Hoppy

1

Avez-vous essayé _MSC_VER. Pour le compilateur C++ de Microsoft, cela donnera le numéro de version majeur et mineur du compilateur. Il pourrait être utilisé comme délimiteur.

+0

Merci, mais je cherchais un moyen de le faire à travers les paramètres du projet de studio visuel. J'ai modifié le message original pour le rendre plus clair. – Hoppy

7

Utilisation _MSC_VER:

#ifndef _MSC_VER 
    // not VC++ 
#elif _MSC_VER < 1400 
    // older than VC++ 2005 
#elif _MSC_VER < 1500 
    // VC++ 2005 
#elif _MSC_VER < 1600 
    // VC++ 2008 
#elif _MSC_VER < 1700 
    // VC++ 2010 
#else 
    // Future versions 
#endif 

Pour un exemple plus complexe, voir comment boost traite avec VC++ versions here

+0

Bon point sur différentes versions (incompatibles) de fichiers de projet pour VS2005 et VS2008. –

+0

J'ai été chargé de préparer le produit sous VS2008. Malheureusement, le reste de mon équipe n'est pas encore prêt à passer à VS2008, donc je ne peux pas convertir les projets et les commettre à notre système de contrôle de source. À l'heure actuelle, la seule partie du code qui doit être modifiée pour fonctionner sous VS2008 est les chemins de bibliothèque. Ce serait bien s'il y avait une macro de page de propriétés que je pourrais utiliser pour la version du compilateur - alors je pourrais simplement télécharger le code source de l'équipe, convertir les projets (en quelques secondes) et effectuer mon développement/test/VS2008. – Hoppy

+0

alors j'ai peur je ne sais pas comment y parvenir – KeatsPeeks

Questions connexes