The relevant integration here is the editor being able to parse error messages to find the source file and line, something that's indispensable even if it doesn't perform cleverness regarding changes to the source file.
But there's at least an implicit requirement to have the compiler's error messages show up in the editor in the first place. Cutting and pasting the whole lot into a compiler-error-oriented editor buffer, and arranging to have the source file pathnames translated between the compiler's and editor's filesystem views (e.g. translating Windows to Unix path separators and prepending the right top-level source directory) would be significantly more inconvenient than just typing a three- or four-digit line number every time I want to move to the next error.
In that case, wouldn't you type something like M-x compile RET ssh user@host make RET? (Or whatever mechanism you use to run a command remotely.) You probably also need to organize some form of path translation in this case: that's what file-name-handler-alist is for.
The approved mechanism in this case is to run a command saying "I want an interactive session on a random machine, give me an xterm" and then do everything in that xterm or things spawned from it. sshing into the machines directly is frowned upon. I suppose one could do compiles as a batch job but that feels distressingly 1970s.
(I'm sure something is possible, it just needs more tuits than I've come up with so far.)
I'm currently contemplating the idea of running an appropriately configured sshd under my own uid as my primary interactive-session process, and sshing in to that from my desktop box. That way all my processes are still children of the process they ought to be, which means in particular that if CPU-time accounting is going on then it will still give the right answers, but I also get to use sensible X forwarding and so forth.
In Emacs, you type M-x compile RET and then enter your command (typically make).
translating Windows to Unix path separators and prepending the right top-level source directory
Emacs does this automatically. And it can handle cygwin paths too using the cygwin-mount library.
(I don't want to sound like an Emacs zealot so I'll stop now...)
(I'm sure something is possible, it just needs more tuits than I've come up with so far.)
sshdunder my own uid as my primary interactive-session process, and sshing in to that from my desktop box. That way all my processes are still children of the process they ought to be, which means in particular that if CPU-time accounting is going on then it will still give the right answers, but I also get to use sensible X forwarding and so forth.