J'ai parcouru un certain nombre d'articles sur Stack Overflow qui répondait à la question "Comment transmettre des définitions de préprocesseur au compilateur à partir de la ligne de commande MSBuild , » et ils ont tous répondu avec une certaine variation de:MSBuild.exe n'acceptant pas non plus/p: DefineConstants ni/p: PreprocessorDefinitions
MSBuild.exe /p:DefineConstants=THING_TO_BE_DEFINED
J'ai essayé toutes les variantes que je pouvais venir avec:
MSBuild.exe "/p:DefineConstants=THING_TO_BE_DEFINED"
MSBuild.exe /p:DefineConstants="THING_TO_BE_DEFINED"
MSBuild.exe "/p:DefineConstants=THING_TO_BE_DEFINED=1"
MSBuild.exe /p:DefineConstants="THING_TO_BE_DEFINED=1"
... et des dizaines d'autres. J'ai aussi flirté avec PreprocessorDefinitions écrasantes de manière similaire. Tous les #error ci-dessous a déclenché le:
#include "stdafx.h"
#if !defined(THING_TO_BE_DEFINED)
#error "THING_TO_BE_DEFINED is not defined"
#endif
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
J'ai essayé cela avec l'application en ligne de commande simples ci-dessus, ainsi qu'avec un énorme projet de jeu que j'ai ici. Je ne peux que deviner que Visual Studio (je vois cela avec 2005 et 2008) a une valeur par défaut dans ses entrailles qui empêche mon argument de ligne de commande d'être appliqué, mais je n'ai trouvé aucune preuve pour soutenir cette hypothèse.
Des idées sur comment je peux faire fonctionner ça? Pourquoi, au nom de FSM, ne s'en tenaient-ils pas au bon vieux -D THING_TO_BE_DEFINED?
Je suis coincé avec le .vcproj que le développeur me remet. Doh. – Sniggerfardimungus