Как настроить путь, из которого получен компилятор-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
(который является списком каталогов).