在emacs内部编译程序的最佳方法是什么?我目前正在打开一个单独的缓冲区,使用C-x 3
并使用M-x eshell
在其中运行eshell,然后直接调用make或clang;大部分时间我都设置了Makefile。从Emacs内部编译程序?
运行编译过程使用M-x compile
与运行make inside eshell有没有什么优势?任何其他的方式来做到这一点,这些有什么优点/缺点?
在emacs内部编译程序的最佳方法是什么?我目前正在打开一个单独的缓冲区,使用C-x 3
并使用M-x eshell
在其中运行eshell,然后直接调用make或clang;大部分时间我都设置了Makefile。从Emacs内部编译程序?
运行编译过程使用M-x compile
与运行make inside eshell有没有什么优势?任何其他的方式来做到这一点,这些有什么优点/缺点?
最简单的方法是使用Emacs内置的compile
命令。 M-x compile
应该会很好。然后,您可以编辑将要运行的命令(默认为make -k
),然后按回车键以运行编译。然后Emacs将解析输出,如果发现任何错误,他们将链接到源文件,以便您可以在缓冲区中打开它们。
关于它阳性是:
M-n
和M-p
滚动通过错误消息大多数这些特征由compilation-minor-mode
次要模式提供尽管不是实际的编译命令和缓冲区。在eshell
中运行编译命令后,通过将次要模式设置为compilation-minor-mode
,您可能会得到类似的结果。
+1。我可以感受到我的'C-x反引号'和'TAB'反射... – ldav1s
我个人更喜欢跑make
或任何命令,您使用的是 一个multi-term 由于以下原因中编译:
它就像的Mxcompile
RET如果激活 compilation-shell-minor-mode
(Mp,C-`,...)。
,但你可以,很明显,使用其他命令,如
mkdir build
cd build
./configure --with-another-option
当然你也可以从Emacs中做到这一点,但我更喜欢这种东西的外壳 互动。
和海事组织的的Mxcompile
的主要缺点是,如果 您正在编辑位于另一个目录不是文件的 Makefile
那么你必须使用的Mxcompile
在正确的 目录然后Mxrecompile
。但是,如果你想要,说 make clean && make
,那么你将不得不切换到正确的 目录,做到这一点,切换回来。
但是term.el
有它自己的缺点,它使用非便携式hacky 的方式来跟踪当前目录。
不熟悉eshell,但我敢肯定它不支持C-x' – carlosdc
@carlosdc eshell是在lisp中编写的emacs内部的UNIX shell中内置的。它的行为像任何标准的UNIX shell,但在emacs中。我只是在emacs中的一个单独的缓冲区中打开它。 – haziz
是的,好像你错过了许多emacs功能。 Will的答案很好地解释了M-x编译的特性。 – carlosdc