Ubuntu配置记录-1 网络与源
Ubuntu配置记录-3:安装网络服务(未完)

Ubuntu配置记录-2:关于开发环境的配置

Tiger Soldier posted @ 2008年4月04日 03:52 in linux with tags ubuntu 开发环境 c c++ emacs doxygen Eclipse java ecb svn , 8036 阅读

安装必备的开发包:

sudo apt-get install build-essential

开发环境之emacs

基本C++配置

装了emacs,问TI要了个配置:

 

(global-set-key [(meta left)] 'backward-sexp)
(global-set-key [(meta right)] 'forward-sexp)

(custom-set-variables
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(ecb-options-version "2.32")
 '(ecb-primary-secondary-mouse-buttons (quote mouse-1--mouse-2))
 '(ecb-source-path (quote ("/usr/include/gtkmm-2.4" "/media/hda10/SourceCode/gftp/GFTP_2_0_17/src" "/media/hda10/SourceCode/gftp/GFTP_2_0_17/lib" "~/programs" ("~/programs/socket/src" "tssocket") ("/home/tigersoldier/programs/tsftp" "tsftp") ("/media/hda9/课程作业" "homework"))))
 '(ecb-tip-of-the-day nil)
 '(ecb-tree-expand-symbol-before t)
  ;;设置用空格缩进而不是Tab
 '(indent-tabs-mode nil)
 '(semanticdb-project-roots (quote ("/" "~/programs/tsftp/")))
 '(transient-mark-mode t))
(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 )

;支持emacs和外部程序的粘贴
(setq x-select-enable-clipboard t)

;;;使用EDE
(require 'ede)
(global-ede-mode t)


;;;;以下是我的快捷键设置
;;;F3:切换到dired模式
(global-set-key  [(f3)]  'dired)
;;;F4:切换到shell模式
(global-set-key  [(f4)]  'ansi-term)
;;;F5:打开speedbar
(global-set-key  [(f5)]  'speedbar)
;;;F11:打开ecb
(global-set-key  [(f11)] 'ecb-activate)
;;;F12:关闭ecb
(global-set-key  [(f12)] 'ecb-deactivate)
;;;M-g 转到指定行号
(global-set-key [(meta g)] 'goto-line)
;;;设置选择起点
(global-set-key (kbd "C-x <SPC>") 'set-mark-command)
;;;高亮选择
(transient-mark-mode t)
;;;显示行号
(setq line-number-mode t)
;;;显示列号
(setq column-number-mode t)
;;打开括号匹配显示模式
(setq show-paren-mode t)
;;括号匹配时可以高亮显示另外一边的括号,但光标不会烦人的跳到另一个括号处。
(setq show-paren-style 'parenthesis)
;; "C-,"设为屏幕左移命令
(global-set-key (kbd "C-,") 'scroll-left)
;; "C-."设为屏幕右移命令
(global-set-key (kbd "C-.") 'scroll-right)

;;;;  CC-mode配置    http://cc-mode.sourceforge.net/
(require  'cc-mode)
(c-set-offset  'inline-open  0)
(c-set-offset  'friend  '-)
(c-set-offset  'substatement-open  0)
;;;;我的C/C++语言编辑策略
 
;;sematic的检索范围
(setq semanticdb-project-roots
   (list
        (expand-file-name "/")))

;;自动补齐命令
(defun my-indent-or-complete ()
   (interactive)
   (if (looking-at "\>")
    (hippie-expand nil)
    (indent-for-tab-command))
 )
(global-set-key [(control tab)] 'my-indent-or-complete)

;;hippie的自动补齐策略
(autoload 'senator-try-expand-semantic "senator")

(setq hippie-expand-try-functions-list
    '(
      senator-try-expand-semantic
      try-expand-dabbrev
      try-expand-dabbrev-visible
      try-expand-dabbrev-all-buffers
      try-expand-dabbrev-from-kill
      try-expand-list
      try-expand-list-all-buffers
      try-expand-line
      try-expand-line-all-buffers
      try-complete-file-name-partially
      try-complete-file-name
      try-expand-whole-kill
      )
)
;-------------------------------------------------------------------------------
;;doxymacs
;;添加doxymacs所在的路径
(add-to-list 'load-path
             "~/share/emacs/site-lisp/")
;;装载doxymacs
(require 'doxymacs)
;;注释高亮,针对C和C++程序
(defun my-doxymacs-font-lock-hook ()
  (if (or (eq major-mode 'c-mode) (eq major-mode 'c++-mode))
      (doxymacs-font-lock)))
(add-hook 'font-lock-mode-hook 'my-doxymacs-font-lock-hook)
;---------------------------------------------------------------------------------
(defun  my-c-mode-common-hook()
    (setq  tab-width  4  indent-tabs-mode  t)
    ;;;  hungry-delete  and  auto-newline
    ;(c-toggle-hungry-state 1)
    ;(c-toggle-auto-newline 0)
    ;(c-toggle-electric-state 0)
    ;;按键定义
    (define-key  c-mode-base-map  [(control  \`)]  'hs-toggle-hiding)
    (define-key  c-mode-base-map  [(return)]  'newline-and-indent)
    (define-key  c-mode-base-map  [(f7)]  'compile)
    ;(define-key  c-mode-base-map  [(meta  \`)]  'c-indent-command)
    (define-key  c-mode-base-map [(tab)] 'my-indent-or-complete)
    (define-key  c-mode-base-map [(meta ?/)] 'semantic-ia-complete-symbol-menu)
    ;;预处理设置
    (setq  c-macro-shrink-window-flag  t)
    (setq  c-macro-preprocessor  "cpp")
    (setq  c-macro-cppflags  "  ")
    (setq  c-macro-prompt-flag  t)
    (setq  hs-minor-mode  t)
    (setq  abbrev-mode  t)
    ;;doxymacs
    (doxymacs-mode)
)

(add-hook  'c-mode-common-hook  'my-c-mode-common-hook)
 
;;;;我的C++语言编辑策略
(defun  my-c++-mode-hook()
    (setq  tab-width  4  indent-tabs-mode  t)
    (c-set-style  "stroustrup")
;;    (define-key  c++-mode-map  [f3]  'replace-regexp)
)


(put 'scroll-left 'disabled nil)

;;jflex-mode
(autoload 'jflex-mode "jflex-mode" nil t)
(setq auto-mode-alist (cons '("\\(\\.flex\\|\\.jflex\\)\\'" . jflex-mode) auto-mode-alist))
 
保存到主目录下的.emacs文件中即可

 

安装ecb

ecb是用来浏览代码用的,也就是列出代码中的函数啊什么的,写大规模的程序的时候必用的。 ecb的安装似乎比较麻烦,幸好ubuntu已经帮我们准备好了:

sudo apt-get install ecb

 

安装完后在Emacs中按M-x(Alt+X),输入ecb-activate就可以启动ecb了

 

第一次运行ecb时,要配置一下它所使用的文件夹

M-x customize-option
ecb-source-path

接下来就是图形化界面的配置了,把常用的代码目录都加进去吧,单击Finish可以关闭,关闭前别忘了保存。

 

配置完后可能鼠标单击没反应,可修改ecb-primary-secondary-mouse-buttons选项:

M-x customize-option
ecb-primary-secondary-mouse-buttons

选第三个(Primary: mouse-1, secondary: mouse-2)即可

 

关于开发用的详细配置,可参考

[转]在Emacs下用C、C++编程

另外据说还有cscope和doxymacs也很有用,以后再试

安装eclipse

首先确保安装了java运行库,为了开发方便我连同jdk一起装了

sudo apt-get install sun-java6-jdk

不想用jdk的只装jre就行(装jdk会自动装jre)

sudo apt-get install sun-java6-jre

之后就可以安装eclipse了

sudo apt-get install eclipse

顺便装语言包

 

sudo apt-get install eclipse-nls

安装GTK开发环境

另外打算玩玩gtk和gnome编程,要把编译用的开发包装上:

sudo apt-get install libgtk1.2-dev gnome-devel libgnome-dev

注意编译时的编译参数,编译gtk程序要用

`gtk-config --cflags --libs`

编译gnome的则是

`gnome-config --cflags --libs gnomeui`
doxygen

doxygen是用于生成C++文档的工具

sudo apt-get install doxygen-gui doxygen-doc

svn

安装

sudo apt-get install subversion
sudo apt-get install libapache2-svn

创建开发库,以我的编译原理实验为例

sudo mkdir -p /home/svn/compiler
sudo svnadmin create /home/svn/compiler/

导入项目目录,项目目录里必须有branches、tags和trunk三个目录,其中trunk目录里放代码,其他两个留空就行。
由于我之前做的实验代码没有这种结构,我又不想改变我已有的目录结构,因此我在/tmp/mycompiler里建立一个虚拟项目,并把原来的代码目录mount到这里的trunk下:

mkdir /tmp/mycompiler
cd /tmp/mycompiler/
mkdir branches
mkdir tags
mkdir trunk
sudo mount --bind /home/tigersoldier/mnt/homework/compiler/实验/ /tmp/mycompiler/trunk/

现在可以导入它了:

sudo svn import /tmp/mycompiler/ file:///home/svn/compiler -m "initial import"

添加网络服务:

如果没有安装xinetd,先安装之

sudo apt-get install xinetd

编辑服务文件/etc/services(Ubuntu无需这一步)

sudo gedit /etc/services

在文件中添加svn服务:

svn          3690/tcp     subversion   # Subversion protocol
svn          3690/udp     subversion

为xinetd添加svn的配置:

sudo gedit /etc/xinetd.d/svn

内容如下:

service svn
{
        type        = INTERNAL
        server    = svnserve
        id            = svn_stream
        socket_type     = stream
        protocol        = tcp
        user        = root
        wait        = no
        server_args     = -i -r /home/svn/
}                                                                              

重新启动xinetd服务

sudo /etc/init.d/xinetd restart

 为eclipse添加SVN支持:

http://subclipse.tigris.org/下载Subclipse,或者在Eclipse里设置插件更新地址:http://subclipse.tigris.org/update_1.2.x

不断添加中……

 

Baiger 说:
Mar 28, 2010 12:58:50 AM

好吧...为了纪念那个纠结的jflex-mode..我在这里留个脚印...


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter