Emacs 在M-x编译';惯性导航与制导

Emacs 在M-x编译';惯性导航与制导,emacs,Emacs,我已经开始使用M-x compile来编译C语言中的程序 运行可执行文件(例如a.out)的最有效方式是什么。目前我正在使用m-/a、 出去。基本上,最好的代码编译运行过程是什么 几乎所有的教程都提到了编译是如何完成的,但我还没有看到一个解决这个问题的教程 谢谢, Samuel我通常只是在构建结束时附加run命令: M-x compile RET gmake && ./a.out 编译成功后,&&将告诉shell仅调用a.out 尽管我经常从现有的shell缓冲区(M-x sh

我已经开始使用M-x compile来编译C语言中的程序

运行可执行文件(例如a.out)的最有效方式是什么。目前我正在使用m-/a、 出去。基本上,最好的代码编译运行过程是什么

几乎所有的教程都提到了编译是如何完成的,但我还没有看到一个解决这个问题的教程

谢谢,
Samuel

我通常只是在构建结束时附加run命令:

M-x compile RET gmake && ./a.out
编译成功后,
&&
将告诉shell仅调用
a.out

尽管我经常从现有的shell缓冲区(M-x shell)或我用包管理的许多shell中的一个来运行程序,但非常类似。

我使用扩展,它允许您指定 非常方便的规则取决于您正在编辑的文件/缓冲区的名称。 例如,在my.emacs中,我为运行时指定以下规则 在项目文件中进行智能编译:

(add-to-list 'smart-compile-alist
         '("euler.*\\.[Cc]+[Pp]*$" . "g++ -O2 -Wall -pedantic -Werror -Wreturn-type %f -lm -lgmpxx -lgmp -o ../bin/%n && time ../bin/%n")
         )
首先指定规则的文件名模式,然后指定执行该规则的路径,然后指定compile命令。
在上述情况下,我添加了&&time../bin/%n,以便在程序成功编译后直接运行该程序。

我的第一选择是交互式开发;编写代码,将文件加载到REPL中,解决错误(使用C-x`,就像使用M-x compile一样),然后在REPL中使用代码


如果这不是一个选项,我使用eshell作为一个通用的REPL。编译,切换到eshell,运行,测试,重复。

在makefile中添加一条规则来编译并运行你的程序,这样M-x Compile将编译并运行,测试,valgrind测试。。。不管怎样,如果程序需要用户输入,我应该怎么做?编译缓冲区是只读的。我不想打开ansi术语或其他东西。@Samuel如果有用户输入,那么我肯定会使用shell缓冲区。因此,无法转义它。。。谢谢Samuel@Samuel在Emacs中从shell运行的一个好处是,Emacs将跟踪您作为程序输入键入的内容(与标准shell不同,标准shell只记住您在shell中键入的内容)。这允许您重复使用已键入的内容。哪种内置版本最好?我试过eshell和ansi术语。Ansi术语使gcc的错误消息看起来很奇怪(重音字符、斜杠等),所以我使用eshell。以后必须想办法解决它。。。