He pasado por un buen número de artículos sobre Stack Overflow que respondieron a la pregunta "¿Cómo paso las definiciones de preprocesador al compilador desde la línea de comandos de MSBuild? ", y todos ellos respondieron con alguna variación de:MSBuild.exe no acepta ni/p: DefinineConstants nor/p: PreprocessorDefinitions
MSBuild.exe /p:DefineConstants=THING_TO_BE_DEFINED
he intentado todas las variaciones que podría llegar a:
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"
... y docenas de otros. También he coqueteado con la anulación de PreprocessorDefinitions de manera similar. Todos ellos desencadenó la #error a continuación:
#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;
}
He estado tratando esto con la aplicación de línea de comandos sencilla arriba, así como con un gran proyecto de juego que tengo aquí. Solo puedo adivinar que Visual Studio (estoy viendo esto con 2005 y 2008) tiene un conjunto predeterminado profundamente en sus entrañas que impide que se aplique mi argumento de línea de comando, pero no he encontrado evidencia que respalde esta hipótesis.
¿Alguna idea sobre cómo puedo hacer que esto funcione? ¿Por qué en nombre de FSM no se quedaron con la buena idea de TH-D THING_TO_BE_DEFINED?
estoy atascado con el .vcproj que el desarrollador me da. Doh. – Sniggerfardimungus