Компиляция программ C++ с помощью Emacs в Windows
Я использую Emacs в течение некоторого времени для базового редактирования текста, но на сегодняшний день я пытаюсь использовать его для компиляции C++. Я искал последние несколько часов о том, как это сделать, но я продолжаю поражать блокпосты в своих методах (я думаю, что некоторые из них связаны с устаревшими учебниками).
в принципе, все, что я хочу сделать, это иметь возможность компилировать программы на C++, которые я пишу в Emacs через команду "M-x compile".
пока у меня есть установил Cygwin и загрузил пакеты для gcc. Я попробовал некоторые другие решения, представленные учебниками онлайн, но они не сработали.
спасибо.
5 ответов
на M-x compile
команда вызывает оболочку (например, linux bash
, windows cmd.exe
и т. д.) Для выполнения . В windows я думаю, что Emacs по умолчанию cmd.exe
shell (через специальный C:/Program Files/Emacs/emacs/bin/cmdproxy.exe
исполняемый).
если вы хотите M-x compile
использовать другую оболочку (возможно cygwin bash
в вашем случае), то вам нужно сказать emacs через изменение shell-file-name
переменная или использование SHELL
переменные среды. Вам также нужно будет убедиться, что cygwin make
найдено путем изменения exec-path
переменной (или с помощью PATH
переменные среды).
для этого:
(setq shell-file-name "C:/cygwin/bin/bash.exe")
(setq exec-path (cons "C:/cygwin/bin" exec-path))
и вы также можете посмотреть на настройка-cygwin.el чтобы настроить это и некоторые другие вещи для cygwin.
после установки компилятора. Вы можете использовать следующий фрагмент для настройки команды компиляции
(add-hook 'c++-mode-hook
(lambda ()
(unless (file-exists-p "Makefile")
(set (make-local-variable 'compile-command)
(let ((file (file-name-nondirectory buffer-file-name)))
(concat "g++ -g -O2 -Wall -o "
(file-name-sans-extension file)
" " file))))))
можно попробовать MinGW - " минималистский GNU для Windows." Я не могу вспомнить, как настроить emacs для вызова пользовательских инструментов сборки из компиляции M-x, но это должно быть возможно. Вот ссылка, с которой я только что столкнулся, которая может быть отправной точкой.
http://www.cae.tntech.edu/help/programming/free-programming-tools-windows
напишите файл Makefile для вашей программы и используйте "make-k" для "M-x compile", как предложено в документации Emacs. Используя make
(или аналогичные инструменты сборки) лучше, чем перепечатывать командные строки для GCC в целом, а не только для Emacs.
если вы устанавливаете Emacs и g++ в Cygwin, он должен работать так же, как Linux, то есть вы можете запустить M-x compile
и использовать g++ myFile.cpp
Как ваша команда компиляции. Если вы используете "родной" Emacs для Windows или смешиваете Cygwin/MinGW/etc, все становится немного сложнее (и у других ответов есть решения), но это сводится к тому, чтобы убедиться, что ваши переменные среды настроены правильно (например, путь, оболочка и т. д.). В конечном счете, если вы не можете запустить его в командной строке (либо в УМК.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; чтобы получить доступ к нему, я добавляю его содержащий каталог к моему пути (в моем ~/.файл):
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-Маунт - модуль для Emacs.