Est-il possible de définir des macro préprocesseur dans la sln fichier et pas dans un projet? (VS2008 c++)
Je suis en conservant une grande base de code et quelques vcproj fichiers sont utilisés dans différentes solutions. En raison de certaines horrible de configuration et de dépendances, il semble que la meilleure façon de traiter certains problèmes de génération est de #ifdef le code, mais pour ce faire j'ai besoin de configurer un préprocesseur de définition de la solution au niveau du fichier et non pas à la vcproj niveau.
Est-ce possible?
Comment faire?
OriginalL'auteur Tim | 2010-09-23
Vous devez vous connecter pour publier un commentaire.
Sélectionnez tous les projets de votre solution. Projet + Propriétés, C/C++, De Préprocesseur, Les Définitions De Préprocesseur. Ajouter
Vous pouvez maintenant tester la SOLUTION de macro de la valeur dans votre code source.
sbi a un point. Si le paramètre est vide après avoir sélectionné tous les projets, alors vous aurez à ajouter pour chaque projet individuel.
J'ai seulement besoin d'un réglage pour UN projet, pas tous les projets que je n la solution. J'ai juste besoin d'être en mesure de choisir de compiler (ou pas) sur la base duquel la solution je suis sous.
Ok, ce sera bien, alors, il suffit de les ignorer "la sélection de tous les projets".
Comment tester cette SOLUTION macro de la valeur dans le code c++?
OriginalL'auteur Hans Passant
Je crois que ce que vous pouvez faire est de créer un projet de feuille de propriétés avec le VS Chef De Projet que tous les projets puissent hériter de la. Cela vous permettra d'en définir un projet commun de paramètres, y compris les macros du préprocesseur, dans un emplacement unique et héritent de leur que vous avez besoin.
OriginalL'auteur Daryl Hanson
J'ai enfin trouver des choses qui me convient
dans mon "C:\Users\\AppData\Local\Microsoft\MSBuild\v4.0"
Je l'ai changer un peu:
Donc maintenant, si un "mysolution.props", pose à côté de "mysolution.la sln", puis-je obtenir une feuille de propriétés pour l'ensemble de la solution, sans rien changer à l'intérieur de mes projets. Il devient une des nouvelles fonctionnalités pour ma Visuelle de l'Environnement
Ainsi, l'ajout explicite
Import
éléments de chaque fichier de projet dans une solution où vous voulez le faire ce serait plus sûr, parce que ce serait de continuer à travailler si vous avez migré de la solution entre les systèmes (ou MSBuild à outils). Comme si votre machine meurt, vous réinstallez le système d'exploitation, vous souhaitez travailler sur le code, sur plus d'une machine (ou de la version de l'OS), ou si vous souhaitez collaborer avec un autre développeur.(D'ailleurs, vous n'avez pas mentionné ce fichier spécifique que vous mettez ce code dans.)
C'est une excellente solution. Toutefois, Visual Studio n'est pas au courant, donc intellisense peut-être un peu bancale. Vous allez avoir à dépendre sur le débogueur à ce que les lignes de code sont réellement active.
OriginalL'auteur Jan
2008 de la sln sont vraiment stupides, ils n'ont que des listes de projets/fichiers à mettre dans l'explorateur de solutions et les dépendances d'un projet, donc je ne pense pas que ce soit une option.
Mon instinct est de faire quelque chose avec des chemins relatifs. Par exemple, dans votre stdafx.h vous pourriez #include "....\project_configuration.h", puis pour la construction de la sln un, vous devriez vérifier les choses pour l'un dir, et la sln b l'autre. Chacun aurait son propre project_configuration.h.
Je crois que vous pourriez faire quelque chose de similaire avec vsprops fichiers, qui sont essentiellement #comprend pour vcproj fichiers, mais j'ai trouvé un peu ennuyeux à maintenir au fil du temps.
OriginalL'auteur Thomas
Une autre approche:
Modifier votre vcxproj (ou votre vcxproj.de l'utilisateur) avec quelque chose comme ça
il n'est pas parfait, car il dépend de votre sln nom de fichier.
Ce serait formidable si nous utilisons un $(SolutionConfiguration) de la variable à la place.
Malheureusement, je ne vois que la variable de configuration du projet: $(Configuration).
En tout cas, il fait le tour...
OriginalL'auteur Jan
Bien, j'ai également regardé
Définir un préprocesseur de la valeur à partir de la ligne de commande à l'aide de MSBuild
et
msbuild, la définition des Symboles de Compilation Conditionnelle
et ceux-ci peuvent fonctionner aussi bien, cependant, notre système de construction est assez fragile en ce moment et je ne suis pas en mesure de changer tout cela.
La solution je suis venu avec était pour dupliquer la configuration de la compilation pour le projet dans une solution et lui donner un nom différent. Puis j'ai ajouté une macros/définition du préprocesseur pour que la nouvelle configuration.
Il semble fonctionner comme souhaité. Donc une seule solution utilise l'ancienne "version" de la configuration et de l'autre solution utilise un clone "ReleaseSpecial" (pas le nom, j'ai vraiment l'habitude) configuration avec différents préprocesseur defs.
Pas l'idéal, mais ça fonctionne.
Ce serait bien si le proprietèes étaient plus faciles à gérer ou à la SLN fichiers peuvent passer dans préprocesseur defs.
OriginalL'auteur Tim