In a C++ file, I have a code like this:
#if ACTIVATE
# pragma message( "Activated" )
#else
# pragma message( "Not Activated")
#endif
I want to set this ACTIVE define to 1 with the msbuild command line.
It tried this but it doesn't work:
msbuild /p:DefineConstants="ACTIVATE=1"
Any idea?
Best Solution
I'm a little late to the party (only 4 years or so), but I just had to workaround this problem on a project, and stumbled across this question while searching for a fix. Our solution was to use an environment variable with
/D
defines in it, combined with the Additional Options box in visual studio.$(ExternalCompilerOptions)
, to the Additional Options under project options->C/C++->Command Line (remember both Debug and Release configs)/D
compiler option to define your macrosItem #1 ends up looking like this in the vcxproj file:
This works for me with VS 2010. We drive msbuild from various build scripts, so the environment variable ugliness is hidden a bit. Note that I have not tested if this works when you need to set the define to specific value (
/DACTIVATE=1
). I think it would work, but I'm concerned about having multiple '='s in there.H^2