Компиляция программ из 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 или какую-либо команду, которую вы используете для компиляции в многоточечном по следующим причинам:

  • это работает как MxcompileRET, если вы активируетеcompilation-shell-minor-mode (Mp, C-`,...).

  • но вы можете, очевидно, использовать другие команды, такие как

    mkdir build
    cd build
    ./configure --with-another-option
    

    Конечно, вы можете сделать это из Emacs, но я предпочитаю взаимодействие с оболочкой для такого рода вещей.

И ИМО, главный недостаток Mxcompile является то, что если вы редактируете файл, расположенный в другом каталоге, чем вашMakefile тогда вы должны использовать Mxcompile в правильном каталоге, а затем Mxrecompile, Но если хочешь, скажиmake clean && make, тогда вам придется переключиться на правильный каталог, сделать это, переключиться обратно.

тем не мение term.el имеет собственный недостаток, он использует непереносимый хакерский способ для отслеживания текущего каталога.

Другие вопросы по тегам