I tried changing the compile command line macro to:
ml64 /nologo $(MASM_OPTIONS) $includes /Fo$object /c $file
like you suggested, but the only way I could think to have it give different values in different targets was to define it as custom variable like shown in the attachment. Is that what you meant? That does work as well, but if I do it that way I guess I have to set a MASM_OPTIONS variable in every project where I add assembly files. That's not too bad, but what I had before, while more complicated, could be set once. Or is there another way to get the MASM_OPTIONS variable to have different values in different targets?
One other thing. If I don't set MASM_OPTIONS to be an empty string in the Release target, when building in release mode, the build process will find the "/Zi" from the Debug target and use that. I wasn't expecting that value. I thought it would evaluate to an empty string if it wasn't defined in the target being build or at the project level. Is that the intended behavior of the custom variables?