从Emacs内部编译程序?
在emacs内部编译程序的最佳方式是什么?我目前正在使用从Emacs内部编译程序?,c,emacs,compilation,clang,eshell,C,Emacs,Compilation,Clang,Eshell,在emacs内部编译程序的最佳方式是什么?我目前正在使用C-x3打开一个单独的缓冲区,并在其中使用M-xeshell运行eshell,然后直接调用make或clang;大多数时候,我确实设置了一个Makefile 使用M-x compile运行编译过程与在eshell内部运行make相比有什么优势吗?还有其他方法吗?这些方法的优点/缺点是什么?最简单的方法是使用Emacs内置的编译命令M-x编译应该可以。然后可以编辑将要运行的命令(默认情况下make-k),然后单击return以运行编译。然后E
C-x3
打开一个单独的缓冲区,并在其中使用M-xeshell
运行eshell,然后直接调用make或clang;大多数时候,我确实设置了一个Makefile
使用
M-x compile
运行编译过程与在eshell内部运行make相比有什么优势吗?还有其他方法吗?这些方法的优点/缺点是什么?最简单的方法是使用Emacs内置的编译命令<代码>M-x编译应该可以。然后可以编辑将要运行的命令(默认情况下make-k
),然后单击return以运行编译。然后Emacs将解析输出,如果它发现任何错误,它们将链接到源文件,以便您可以在缓冲区中打开它们
积极的方面有:
- 解析输出缓冲区
- 调用之间对compile命令的记忆
- 编译输出显示在未选择的缓冲区中,您可以快速编辑正在处理的文件并修复任何愚蠢的错误
和M-n
按错误消息滚动M-p
这些特性中的大多数是由编译次要模式提供的,尽管不是实际的编译命令和缓冲区。在
eshell
中运行编译命令后,通过将次要模式设置为compilation minor mode
,可能会得到类似的结果 我个人更喜欢运行make
或任何您用来
编译
基于以下原因:
- 如果激活,它的工作原理类似于M-x
RET 编译shell次要模式(M-p,C-`,…)compile
- 但显然,您可以使用其他命令,如
当然,您可以从Emacs执行此操作,但我更喜欢shell 这种东西的互动mkdir build cd build ./configure --with-another-option
Makefile
然后必须以正确的方式使用M-xcompile
目录,然后M-x重新编译
。但如果你想,就对我说
make clean&&make
,然后您必须切换到正确的
目录,做它,切换回来
然而,term.el
有其自身的缺点,它使用了一种不可移植的黑客软件
跟踪当前目录的方法。不熟悉eshell,但我很确定它不支持C-x`@carlosdc eshell是emacs中用lisp编写的内置UNIX shell。它的行为类似于任何标准的UNIX shell,但在emacs中。我只是在emacs中的一个单独的缓冲区中打开它。是的,似乎您错过了很多emacs功能。威尔的回答很好地解释了M-x compile的功能。我肯定会选择
M-x compile
,因为我刚刚在M-x eshell
中尝试了make
。事实上,M-xcompile
是我经常使用的少数几个键绑定之一(C-xc
,如果您感兴趣的话)。