Est-il possible de déclarer globalement un #define?
Comme je veux avoir un fichier qui a par exemple,
#define MONO
et je veux que tous les fichiers de code source sachent que cette directive de préprocesseur est définie. Comment pourrais-je y arriver?
Mise à jour: Vous ne pouvez pas définir une définition à l’échelle de la solution, mais la réponse ci-dessous est réalisable pour chaque projet.
Vous les définissez dans vos options de compilation ou de génération:
http://msdn.microsoft.com/en-US/library/76zdzba1(v=VS.80).aspx (VS2008) http://msdn.microsoft.com/en-US/library/76zdzba1(v=VS .100) .aspx (VS2010)
voir l’en-tête “Pour définir une constante personnalisée”.
Mettre à jour
Documentation Microsoft sur les options de génération
Vous accédez aux options de construction en cliquant avec le bouton droit sur le projet et en sélectionnant les propriétés dans le menu.
Je ne pense pas qu’il existe un moyen de créer un #define à l’ échelle de la solution . Vous pouvez en créer un pour chaque projet / assemblage, comme les autres réponses l’ont décrit, mais vous devrez le faire pour chaque projet de la solution si vous avez besoin de tous les fichiers de code source pour connaître ce #define.
Ici, il y a une réponse qui répond à l’exigence: “#define Constant on Solution Basis”
Y a-t-il de toute façon #define Constant sur une base de solution?
Créez une nouvelle configuration de solution dans Configuration Manager et assurez-vous que la case est cochée pour créer également de nouvelles configurations de projet. Et ensuite, dans les propriétés de construction de chaque projet, entrez MONO
dans la zone Symboles de compilation conditionnelle .
en vs 2013, vous pouvez utiliser / définir: x ou / d: x http://msdn.microsoft.com/en-us/library/0feaad6z.aspx
Je connais la solution pour les projets C # (je ne l’ai pas testé pour d’autres projets)
Par exemple, vous avez:
Project1\ Project2\ Solution1\Solution1.sln Solution2\Solution2.sln
Créer un fichier SolutionDefines.targets
dans le répertoire de la solution
Project1\ Project2\ Solution1\Solution1.sln Solution1\SolutionDefines.targets Solution2\Solution2.sln Solution2\SolutionDefines.targets Solution3\Solution2.sln Solution3\|no target file|
dans chaque fichier de projet, ajoutez:
Dans Solution1\SolutionDefines.targets
ajoutez:
$(DefineConstants);TRACING_BUILD
Dans Solution2\SolutionDefines.targets
ajoutez:
$(DefineConstants);ANOTHER_DEFINE
Dans ce cas, vous avez:
Pour Solution1 – tous les projets ont défini TRACING_BUILD
Pour Solution2 – tous les projets ont défini ANOTHER_DEFINE
define
Pour Solution3 – tous les projets – aucune définition ajoutée
Dans cette approche, vous devez stocker toutes les solutions avec des définitions étendues dans des répertoires distincts.
L’emplacement approprié pour une directive de préprocesseur est la configuration de génération VS. Si vous utilisez une ligne de commande pour créer votre solution, vous pouvez également la transmettre en utilisant l’option / define.