这是用例:我阅读了有关 C++ 的技术博客文章
(多重继承失败和多线程失败等等:)。
通常它们带有一些代码。它几乎总是一个文件,而我几乎总是
想运行它并玩弄它。
我想用 Emacs 做这件事,我想快点做,
与最少(或相当少)的击键一样。
所以假设我已经在它自己的文件夹中创建了一个 multiple_inheritance.cc
文件
并粘贴了代码。如何真正快速地获得可执行文件?
这就是我现在正在做的事情(希望有人会改进它。)
(defun cpp-generate-makefile ()
(interactive)
(let* ((n-buffer (buffer-file-name))
(n-file (file-name-nondirectory n-buffer))
(n-target (file-name-sans-extension n-file))
(n-makefile (concat (file-name-directory n-buffer) "Makefile")))
(if (file-exists-p n-makefile)
(when (called-interactively-p 'any)
(message "Makefile already exists"))
(with-current-buffer (find-file-noselect n-makefile)
(insert
(concat n-target ": " n-file
"\n\tg++ -g -O2 -std=c++0x -o $@ $^\n\n"
"clean: \n\trm -f " n-target "\n"))
(save-buffer)))))
(defun cpp-run ()
(interactive)
(save-buffer)
(cpp-generate-makefile)
(compile "make"))
(add-hook 'c++-mode-hook
(lambda()
;; ...
(define-key c++-mode-map [f5] 'cpp-run)))
以下是目前让我慢下来的一些事情:
compile
询问我是否要保存任何与 C++ 完全无关的打开文件。 *compilation*
缓冲区中有一个点,以防出现错误。我查看了
compile.el
,它定义了 compilation-num-errors-found
,但该变量未在该文件中的任何地方使用。
为什么不启动
term
并运行程序? 最佳答案
总结评论中的答案。
compilation-ask-about-save
的值。如果您不想全局更改此设置(使用 setq),您可以通过将其包装在 (let ((compilation-ask-about-save nil)) ...function contents...)
语句中来在您的函数内部更改它。 (define-key c++-mode-map "\M-j" 'next-error)
。我个人为此使用 global-set-key,只是因为它在一大堆模式中都很有用。 (compile "make && ./a.out")
(当然使用可执行文件的名称)。 希望这可以帮助。
关于c++ - Emacs 最快的 C++ 编译过程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17521232/