我找不到如何在emacs终端中运行c程序。我可以用M-x cc filename.c编译它,它工作正常。运行程序的命令是什么。 M-x(我输入什么)。
答案 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 shell
或M-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
等。