在Windows上使用Emacs编译C++程序

Jam*_*ley 8 c++ ide emacs gcc

我一直在使用Emacs进行基本的文本编辑,但是到目前为止我正在尝试将它用于c ++编译.我已经查看了过去几个小时关于如何解决这个问题,但我一直在他们的技术上遇到障碍(我认为其中一些与教程已经过时有关).

基本上,我想要做的就是能够通过'Mx compile'命令编译我在Emacs中编写的C++程序.

到目前为止,我已经安装了Cygwin并下载了gcc的软件包.我尝试过在线教程提供的其他一些解决方案,但他们没有成功.

谢谢.

Ham*_*aya 9

安装编译器后.您可以使用以下代码段来自定义编译命令

(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))))))
Run Code Online (Sandbox Code Playgroud)


lua*_*yad 3

M-x compile命令调用 shell(例如 linux bash、 windowscmd.exe等)来运行该make命令。在 Windows 上,我认为 emacs 默认为cmd.exeshell(通过特殊的C:/Program Files/Emacs/emacs/bin/cmdproxy.exe可执行文件)。

如果您希望M-x compile使用不同的 shell(bash在您的情况下可能是 cygwin),那么您需要通过更改shell-file-name变量或使用SHELL环境变量来告诉 emacs。您还需要确保通过更改变量(或使用环境变量)make找到cygwin。exec-pathPATH

去做这个:

(setq shell-file-name "C:/cygwin/bin/bash.exe") 
(setq exec-path (cons "C:/cygwin/bin" exec-path))
Run Code Online (Sandbox Code Playgroud)

您还可以查看setup-cygwin.el来设置此功能以及 cygwin 的其他一些内容。