There's not much difference since generating the abstract syntax tree is usually the hardest part. Once you've done that, it's just a matter of generating a string representation for each node in the tree for the given target language.
I've worked on compilers for a long time and the AST generation is typically the easiest part.
Optimizations, and different target backends are easily an order of magnitude harder.
That's why every new language typically begins as a simple AST tree walker, that's the easy part.
They can they "graduate" to byte codes and then to asm generation if appropriate.
AST generation is usually simple. It's the conversion to the other language that usually get's difficult.
Also, targeting different backends is drudgery but I never thought of it as being hard.
Ah, ok. In that case, I'd agree.