Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Emacs内部编译程序?_C_Emacs_Compilation_Clang_Eshell - Fatal编程技术网

从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

在emacs内部编译程序的最佳方式是什么?我目前正在使用
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
    compile
    RET 编译shell次要模式(M-p,C-`,…)

  • 但显然,您可以使用其他命令,如

    mkdir build
    cd build
    ./configure --with-another-option
    
    当然,您可以从Emacs执行此操作,但我更喜欢shell 这种东西的互动

在国际海事组织,M-x编译的主要缺点是 您正在编辑一个文件,该文件位于您的
Makefile
然后必须以正确的方式使用M-x
compile
目录,然后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
,如果您感兴趣的话)。