I noticed two things. First, my C++ compile recipe was set to
recipe.cpp.o.pattern={recipe.c.o.pattern}
By copying the text in the c to the cpp pattern yielded a different result and the -o "{object_file}" actually worked, but just in the -o and not in my other -MQ and -MD options:
Generating function prototypes...
"C:\Program Files (x86)\Rowley Associates Limited\CrossWorks for ARM 3.7\gcc\arm-none-eabi\bin\cc1" -quiet -fmessage-length=0 -fno-diagnostics-show-caret -mtp=soft -mcpu=cortex-a5 -mlittle-endian -mfloat-abi=hard -mfpu=vfpv4-d16 -mthumb-interwork -nostdinc -fPIC -std=gnu99 -fno-dwarf2-cfi-asm -fno-builtin -ffunction-sections -fdata-sections -fshort-enums -fno-common "-IC:\Users\Brian\Documents\Arduino\hardware\Amulet\sam\cores\sam\" -DF_CPU=533000000L -DARDUINO=10802 -DARDUINO_MK-070C-HP -DARDUINO_ARCH_SAM "-IC:\Users\Brian\Documents\Arduino\hardware\Amulet\sam\cores\Amulet" "-IC:\Users\Brian\Documents\Arduino\hardware\Amulet\sam\variants\Amulet" "C:\Users\Brian\AppData\Local\Temp\arduino_build_77900\sketch\Amulet_Test.ino.cpp" -o "C:\Users\Brian\AppData\Local\Temp\arduino_build_77900\preproc\ctags_target_for_gcc_minus_e.cpp" -MQ "" -MD ""
cc1: error: to generate dependencies you must specify either -M or -MM
I also noticed that my error was actually caused during the "Generating function prototypes..." step, which appears to use the recipe.cpp.o.pattern. Since the -MQ and -MD are preprocessor-related, I think I'm just trying to do too much in the compile step because thats how my regular IDE (Rowley CrossStudio) was doing it.