安装编译器后.您可以使用以下代码段来自定义编译命令
(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)
该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 的其他一些内容。