在Emacs中编译并运行C程序

时间:2012-03-07 00:04:00

标签: c emacs

我找不到如何在emacs终端中运行c程序。我可以用M-x cc filename.c编译它,它工作正常。运行程序的命令是什么。 M-x(我输入什么)。

5 个答案:

答案 0 :(得分:18)

更好的想法是使用Makefile

---- X Makefile X----
build:
        gcc -o exec_name input.c
run:
    ./exec_name

然后你可以做 Mx compile 并命令为 make build 来编译程序和 Mx compile 然后 make运行来运行程序。

另一种运行方式是 M-x gdb

答案 1 :(得分:11)

shell-command就是你所追求的。

向Emacs询问: C-h f“shell-command”。它必然是 M - !

编辑:澄清所需的确切行动

这样做:

M-! foo-program 输入

其中foo-program是已编译可执行文件的名称。

答案 2 :(得分:5)

虽然这可能不是最佳方法,但这是查看C程序的输出的一种非常快捷的方法。

;; Run C programs directly from within emacs
(defun execute-c-program ()
  (interactive)
  (defvar foo)
  (setq foo (concat "gcc " (buffer-name) " && ./a.out" ))
  (shell-command foo))

(global-set-key [C-f1] 'execute-c-program)

只需将以下代码放入init文件中,然后按 Ctrl + F1 即可查看迷你缓冲区中的输出。

答案 3 :(得分:3)

另一种方法是使用M-x shellM-x term直接在shell中运行程序,在第一种情况下打开缓冲区中的shell,在第二种情况下打开真正的shell。然后运行您的计划./myprog

答案 4 :(得分:3)

您可以随时使用compile,就像构建它一样。如果您的程序吐出可以突出显示并跳转到编译器的消息,那么这很好。您还可以编写一个简短的函数,如:

(defun run-current-file ()
  "Runs the compilation of the current file.
Assumes it has the same name, but without an extension"
  (interactive)
  (compile (file-name-sans-extension buffer-file-name)))

这样您就无法始终输入文件名。这有一个额外的好处,如果构建产品在另一个目录中,你可以绑定default-directory,并且你可以有更复杂的名称。当然,如果您愿意输出,可以将compile更改为shell-command等。