Llego un poco tarde a la fiesta (solo 4 años más o menos), pero tuve que resolver este problema en un proyecto y tropecé con esta pregunta mientras buscaba una solución. Nuestra solución fue usar una variable de entorno combinada con el cuadro Opciones adicionales en Visual Studio.
- En Visual Studio, añadir una macro variable de entorno, $ (ExternalCompilerOptions), a las opciones adicionales bajo el proyecto opciones-> C/C++ -> línea de comandos (recuerda tanto de depuración y liberación configuraciones)
Conjunto la variable de entorno antes de llamar msbuild
C:> conjunto ExternalCompilerOptions =/DFOO/dbar
c:> msbuild
artículo # 1 extremos pareciéndose a esto en el archivo vcxproj:
<ClCompile>
<AdditionalOptions>$(ExternalCompilerOptions) ... </AdditionalOptions>
</ClCompile>
Esto funciona para mí con VS 2010. Nos dirigimos msbuild de varios guiones de construcción, por lo que la fealdad se esconde un poco. Tenga en cuenta que no he probado si esto funciona cuando necesita establecer la definición de valor específico (/ DACTIVATE = 1). Creo que funcionaría, pero me preocupa tener múltiples '=' allí.
H^2
Encogiéndose de hombros, tal vez no lo haga en C++, pero la respuesta de Matt Howells funcionó para mí con un proyecto de C#. No se puede pensar en ninguna razón por la que no funcionaría en C++. – blak3r
Esta respuesta aceptada es tan profunda que ni siquiera puedo verla. –
@ blak3r La respuesta de Matts no funciona en C++ y esta pregunta es específicamente sobre C++. Y parece que no hay forma de hacerlo con solo agregar indicadores en la línea de comandos sin cambios adicionales en el archivo de proyecto u otro archivo externo. – Zitrax