emacs常用配置 gcc -o 输出文件指定

7 篇文章 0 订阅
emacs常用配置整理及使用》第6条的配置了使用gcc/g++编译的快捷键,如下:
(defun quick-compile ()
	"A quick compile funciton for C"
	(interactive)
	(compile (concat "gcc " (buffer-name (current-buffer)) " -g -pg")))	;;编译c
(global-set-key [(f5)] 'quick-compile)	;;快捷键F5
其中未指定gcc/g++ -o的输出参数,若想该参数和当前buffer打开的文件名保持一致,可设置如下:
(defun quick-compile ()
	"A quick compile funciton for C"
	(interactive)
	(compile (concat "gcc " (buffer-name (current-buffer)) " -g -pg -o " 
	(file-name-sans-extension (buffer-name (current-buffer))) )))	;;编译c
(global-set-key [(f5)] 'quick-compile)	;;快捷键F5

其中(file-name-sans-extension (buffer-name (current-buffer)))为获取当前buffer的文件名(去掉扩展名)

如下图所示:


相应的gdb调试的快捷设置也要修改,如下:

(defun quick-debug ()
	"A quick debug funciton for C++"
	(interactive)
    ;;(gdb (concat "gdb --annotate=3" " a.out")))	;;调试
	(gdb (concat "gdb --annotate=3 " (file-name-sans-extension (buffer-name (current-buffer))) )))	;;调试 
(global-set-key [(f6)] 'quick-debug)	;;快捷键F6

注意:"gdb --annotate=3 "此处要多加一个空格,以便和后面的参数隔开。

然后打开要调试的文件,按F6快捷键,gdb会自动加载当前buffer关联的文件,当然也可以在已有的gdb调试窗口中使用如下命令,来加载要调试的文件:

 (gdb) file 6.1

显示效果如下:


备注:

如果使用《emacs常用配置整理及使用》所提供的.emacs配置文件,需要做一些修改,注释掉以下配置,否则会导致gdb多窗口调试失败。

;;shell,gdb退出后,自动关闭该buffer
;;(add-hook 'shell-mode-hook 'mode-hook-func)
;;(add-hook 'gdb-mode-hook 'mode-hook-func)
(defun mode-hook-func  ()
  (set-process-sentinel (get-buffer-process (current-buffer))
         #'kill-buffer-on-exit))
(defun kill-buffer-on-exit (process state)
  (message "%s" state)
  (if (or
       (string-match "exited abnormally with code.*" state)
       (string-match "finished" state))
      (kill-buffer (current-buffer)))) 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值