Как настроить путь, из которого получен компилятор-geto-ошибка Emacs из буфера компиляции?

Я использую Emacs 23 и имею следующую проблему:

Я запускаю нашу систему построения проекта из Emacs, например, M-x compile → cd/foo/bar && &./build

Теперь система сборки делает некоторую магию "cd" в какой-то подкаталог для процесса сборки, а затем gcc выдает ошибку:

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

Теперь проблема в том, что Emacs не найдет этот путь, потому что он предполагает, что процесс компиляции запущен в /foo/bar, а не в /foo/bar/builddir. Поэтому ведущий "../" не работает для Emacs, например. при запуске compile-goto-error. Есть ли способ сказать Emacs попробовать пропустить ведущие "../"?

Ответ 1

Лучшим решением может быть изменение системы сборки для извещения сообщений при изменении каталогов. Emacs ищет

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

(См. переменную compilation-directory-matcher. Если ваша система сборки генерирует сообщения при изменении каталогов, но они не соответствуют формату, который ищет Emacs, вы можете добавить новые регулярные выражения в compilation-directory-matcher.)

Другим решением является изменение compilation-search-path (который является списком каталогов).