gombeのブログ

マイコンの電子工作系PIC32/KiCad/C/C++/3D/

HALの開発環境


まさかeclipseなんて使うことないよね。今はエディターはemacs一択(宗教戦争ならぬEditor戦争)

ということで開発環境についてのメモです。開発環境はエディター一本ですよ。そんなIDEなんて使ってこれどうするんだあれどうするんだプロジェクトぶっ壊れたgitどうなってるんだMakefile黒魔術すぎ共同管理どうするんだryいろいろ大変ですね。

まあとりあえずエディターから設定を上げましょう。emacs です。vim派の方は読み飛ばしてね。私が入れたのは以下のものだけです。

  • タグジャンプ
  • Clangを用いた補完機能(gccつかうけどClangで補完かけてる(ww))
  • 細かい色使い。どうでもいいけど(w

で、emacsをインストールしてない方は

[shell] $ sudo apt-get install emacs [/shell]

タグジャンプ

これはglobalっていうそふとを使います。

[shell] $ sudo apt-get install global [/shell]

emacsを起動し、

[shell] $ emacs ~/.emacs.d/init.el [/shell]

以下を書き込みます。あ、なんか文字がぶっ壊れているところがある (require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/")) (package-initialize)

再起動後、M-x package-list-packagesでパッケージの一覧を出します。結構時間かかります。ゆっくり待ちましょう。 emacs_gtags_install1 これをインスコすると、ggtags-modeになれると思います。これがタグジャンプです。 プロジェクトのルートで

[shell] $ gtags [/shell]

とうつと、タグファイルが生成されます。この状態でemacs上でggtags-modeになると、M-.でタグジャンプできます。本来は設定ファイル書くべきなんだけど・・・後で書きます。

補完機能です。

結構めんどくさいですが、がんばりましょう。 まずは必要なパッケージのインスコです。 参考 読み込みパスの追加 http://qiita.com/icb54615/items/4c652ad4afccae5fe2ef Clangの保管とかが書いてあった。 http://hiroom2.jimdo.com/2015/09/19/emacs%E3%81%AEauto-complete-clang-async%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/

まずは同様にemacsのauto-completeのC言語版(C++)のpackageをインスコします。

[shell] $ sudo apt-get install clang llvm-dev libclang-dev 作業用ディレクトリに移動して $ git clone https://github.com/Golevka/emacs-clang-complete-async.git $ cd emacs-clang-complete-async $ make $ mkdir ~/.emacs.d/lisp/ $ mkdir ~/.emacs.d/bin/ $ cp clang-complete ~/.emacs.d/bin/ $ cp *.el ~/.emacs/lisp/ [/shell]

で、あとはemacsに読み込ませます。 ~/.emacs.d/init.elに以下を書き込みます。

あとなんか文字が化けているところがあるけど直して使ってください ダブルクォーテーションってなんで化けるんだろう。。。

;;; load-pathを追加する関数を定義 (defun add-to-load-path (&rest paths) (let (path) (dolist (path paths paths) (let *1 (ac-clang-launch-completion-process)))

Completion

今日はとりあえずここまで。疲れた。寝る。[2016/6/29]

*1:default-directory (expand-file-name (concat user-emacs-directory path)))) (add-to-list 'load-path default-directory) (if (fboundp 'normal-top-level-add-subdirs-to-load-path) (normal-top-level-add-subdirs-to-load-path))))))

;;; ディレクトリをサブディレクトリごとload-pathに追加 (add-to-load-path "lisp")

(require 'auto-complete-clang-async) (add-hook 'c-mode-hook '(lambda() (setq ac-clang-complete-executable "~/.emacs.d/bin/clang-complete") (setq ac-sources '(ac-source-clang-async