Currently calling -H to generate header files and -L\implib to create import libraries via the linker creates .di and .lib files in the current directory, regardless if the -od switch is present. This makes it difficult to make build scripts which must keep their current working directory intact in order to resolve imports, but where the output files need to be in some subdirectory.
-H follows -Hd"dir" for output, not -od. I didn't know this when I filed this bug. As for -L\implib, optlink might have some switches for this but I'll have to look into it. Closing.