Если вы устанавливаете Emacs и g ++ в Cygwin, он должен работать точно так же, как Linux, то есть вы можете запустить M-x compile
и использовать g++ myFile.cpp
в качестве команды компиляции. Если вы используете «родной» Emacs для Windows или смешиваете Cygwin / MinGW / etc, все становится немного сложнее (и у других ответов есть решения), но все сводится к тому, чтобы убедиться, что переменные среды установлены правильно ( например, путь, оболочка и т. д.). В конечном итоге, если вы не можете запустить его из командной строки (cmd.exe или / bin / bash из Cygwin или MinGW), он не будет работать ни в одном Emacs.
В качестве примера я компилирую C ++ в Emacs, используя SCons / g ++ из Cygwin и devenv.com из MS Visual Studio. Это, конечно, требует установки SCons и Visual Studio, но это возможно. SCons устанавливается из Cygwinports (http://sourceware.org/cygwinports/) и заканчивается в / usr / bin, который находится по стандартному пути, но devenv.com глубоко скрыт в Visual Studio; чтобы получить к нему доступ, я добавляю каталог, содержащий его мой путь (в моем ~ / .bash_profile):
case $OS in
Windows_NT)
case "`uname -s`" in
CYGWIN_NT*)
PATH=${PATH}:"/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/"
;;
MINGW32_NT*)
PATH=${PATH}:"/c/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/"
;;
esac
esac
Затем я создаю команду компиляции либо scons
, либо devenv.com -build "Release|Platform MySolution.sln
, и оттуда дела идут весело. Вы можете сделать все настолько сложно, насколько вам нужно (в моем текущем проекте у меня есть сценарии сборки и тестирования оболочки, которые вызывают scons
и devenv.com
; я склонен избегать пакетных файлов, так как оболочка гораздо более мощная). Моя единственная жалоба заключается в том, что Microsoft изменила вывод ошибок, и поэтому автоматический переход к строкам в коде из выходных данных компилятора в настоящее время не работает (мне нужно посмотреть, как это исправить).
Я предполагаю, что вы исходите из "родной" сборки Emacs, и в этом случае вам также может пригодиться модуль cygwin-mount для Emacs.