also allow -D* which is a preprocessor directive-y thing
creates directories if necessary
Merge branch 'windows-support'

Fixes merge conflicts
Remove doubling
Modify the behavior a bit and make it more sane
Formatting output more nicely, moving some stuff around and doing more verbosity checks