Просто M-x compile
один раз из корневого каталога. Это создаст буфер *compilation*
, который запомнит каталог и параметры, с которыми он был вызван.
Затем, когда вы хотите перекомпилировать, просто наберите M-x recompile
. Это работает из любого места. Он возвращает ваш оригинальный буфер *compilation*
и использует каталог, сохраненный в этом буфере, для поиска вашего Makefile.
Есть и другие способы запуска компиляции вне корневого каталога вашего проекта, но я подумал, что укажу на это, поскольку он работает "из коробки" с нулевой настройкой. Многие другие ответы сделали решение более сложным, чем оно есть.
Подсказки буфера компиляции
Если вы наберете C-c C-f
, находясь в буфере компиляции, он включит next-error-follow-minor-mode
, так что, пока вы будете перемещаться среди ошибок буфера компиляции, во втором окне будет отображаться ошибка в исходном буфере исходного кода.
M-n
и M-p
будут перемещаться между ошибками буфера компиляции.
Если вы уже находитесь в исходном буфере и хотите переключаться между ошибками, введите M-g n
или M-g p
.
Подсветка синтаксических ошибок
Введите M-x flymake-mode
для проверки синтаксиса на лету при вводе. Это выделит синтаксические ошибки красным цветом. Если навести курсор мыши, появится сообщение об ошибке.
Чтобы Flymake работал, вы должны добавить правило проверки синтаксиса в ваш make-файл.
C ++ пример:
check-syntax:
g++ -o nul -S ${CXXFLAGS} ${CHK_SOURCES}
Это правило проверяет синтаксис файла, но не компилирует его, поэтому оно работает быстро.