Компиляция программ из Emacs?
Каков наилучший способ компиляции программ внутри Emacs? В настоящее время я открываю отдельный буфер с C-x 3
и запустить eshell внутри него, используя M-x eshell
затем вызывать либо make, либо лязгать напрямую; в большинстве случаев у меня есть настроенный Makefile.
Есть ли какое-либо преимущество при запуске процесса компиляции с использованием M-x compile
против бега сделать внутри eshell? Любые другие способы сделать это и каковы преимущества / недостатки тех?
2 ответа
Самый простой способ сделать это - использовать встроенный Emacs compile
команда. M-x compile
Должен ли ты сделать хорошо. Затем вы можете отредактировать команду, которая будет выполняться (по умолчанию make -k
), а затем нажмите клавишу возврата, чтобы запустить компиляцию. Затем Emacs проанализирует вывод, и если он обнаружит какие-либо ошибки, они свяжутся с исходными файлами, чтобы вы могли открыть их в буфере.
Положительные стороны этого:
- Разбор выходного буфера
- Запоминание команды компиляции между вызовами
- Вывод компиляции отображается в невыбранном буфере, вы можете быстро редактировать файл, над которым вы работали, и исправлять любые глупые ошибки.
M-n
а такжеM-p
прокрутка по сообщениям об ошибках
Большинство из этих функций предоставляются compilation-minor-mode
второстепенный режим, хотя не фактическая команда компиляции и буфер. После того, как вы запустили команду компиляции в eshell
вероятно, вы могли бы получить аналогичные результаты, установив дополнительный режим в compilation-minor-mode
,
Я лично предпочитаю бегать make
или какую-либо команду, которую вы используете для компиляции в многоточечном по следующим причинам:
это работает как Mx
compile
RET, если вы активируетеcompilation-shell-minor-mode
(Mp, C-`,...).но вы можете, очевидно, использовать другие команды, такие как
mkdir build cd build ./configure --with-another-option
Конечно, вы можете сделать это из Emacs, но я предпочитаю взаимодействие с оболочкой для такого рода вещей.
И ИМО, главный недостаток Mxcompile
является то, что если вы редактируете файл, расположенный в другом каталоге, чем вашMakefile
тогда вы должны использовать Mxcompile
в правильном каталоге, а затем Mxrecompile
, Но если хочешь, скажиmake clean && make
, тогда вам придется переключиться на правильный каталог, сделать это, переключиться обратно.
тем не мение term.el
имеет собственный недостаток, он использует непереносимый хакерский способ для отслеживания текущего каталога.