Take the 2-minute tour ×

I am using Emacs 23 and have the following problem:

I run our project's build system from within Emacs like M-x compile -> cd /foo/bar && ./build

The build system now does some magic, "cd"s into some subdirectory for the build process and then gcc throws an error:

../src/somesource.cc:50 error: blablabla

Now the problem is that Emacs won't find that path, because it assumes the compile process started out in /foo/bar, and not in /foo/bar/builddir. So the leading "../" is not working for Emacs, e.g. when running compile-goto-error. Is there a way to tell Emacs to try skipping leading "../"?

share|improve this question
Strangely enough, I'm running into this when building Emacs... –  SamB Jun 23 '12 at 2:33
add comment

migrated from programmers.stackexchange.com May 4 '12 at 14:55


1 Answer

up vote 6 down vote accepted

The best solution might be to change the build system to emit messages when it changes directories. Emacs looks for

Entering directory `...'
Leaving directory `...'

(See the compilation-directory-matcher variable. If your build system does emit messages when it changes directories, but they're not in the format Emacs is looking for, you can add new regexps to compilation-directory-matcher.)

The other solution is to change compilation-search-path (which is a list of directories).

share|improve this answer
I didn't know about the "Entering..." functionality of Emacs. That'll probably help! –  Arne May 5 '12 at 9:27
@Arne, GNU Make prints messages in that form when using recursive makefiles. That's why Emacs looks for them. –  cjm May 5 '12 at 9:31
This solution seems to be what I'm looking for, but I'm unable to edit compilation-directory-matcher variable (as you can see here : stackoverflow.com/q/21309720/61838). Moreover, the compilation-search-path doesn't seems to solve the problem (even when I only need emacs to look for sources in one directory). Any help would be appreciated! –  claf Jan 23 at 15:14
add comment

Your Answer


