编译emacs内部程序的最佳方法是什么?我目前正在使用C-x 3
打开一个单独的缓冲区,并使用M-x eshell
在其中运行Eshell,然后直接调用Make或Clang;大多数时候,我确实设置了一个makefile。
使用M-x compile
与在Eshell内部运行CC_3与运行的汇编过程有任何优势吗?任何其他方法可以做什么,这些方法的优点/缺点是什么?
最简单的方法是使用emacs内置compile
命令。M-x compile
应该对您很好。然后,您可以编辑将运行的命令(默认情况下为make -k
),然后按返回以运行编译。然后,Emacs将解析输出,如果发现任何错误,它们将链接到源文件,以便您可以在缓冲区中打开它们。
关于它的积极因素是:
- 输出缓冲区的解析
- 记忆在调用之间的编译命令
- 编译输出以非选择的缓冲区显示,您可以快速编辑您正在处理的文件并修复任何愚蠢的错误。
-
M-n
和M-p
滚动错误消息
这些功能大多数由compilation-minor-mode
次要模式提供,尽管不是实际的编译命令和缓冲区。在eshell
中运行汇编命令后,您可能会通过将次要模式设置为compilation-minor-mode
获得类似的结果。
我个人更喜欢运行make
或您使用的任何命令在多期内编译由于以下原因:
-
它像 m-x
compile
ret 如果激活compilation-shell-minor-mode
( m-p , c-` ,…)。 -
,但显然可以使用其他命令,例如
mkdir build cd build ./configure --with-another-option
当然可以从emacs做到这一点,但我更喜欢外壳这种东西的互动。
和imo, m-x compile
的主要缺点是您正在编辑位于另一个目录中的文件 Makefile
然后您必须在正确的目录,然后 m-x recompile
。但是如果你愿意,请说 make clean && make
,然后您必须切换到正确的目录,这样做,切换。
但是 term.el
有自己的缺点,它使用了不可便利的骇客跟踪当前目录的方法。