プログラミング初心者向け Ubuntuでeclipse CDTの導入

Ubuntuでeclipseを導入して、C, C++, Javaの開発環境を導入していきます。

#準備物
- Ubuntu 17.04-ja ISOイメージ
- VMware Workstation 12 Player

# 0.仮想環境を作る。
VMware Workstation 12 Playerを起動して、Ubuntu ISOイメージを使って仮想OSを作っておく。
　
必要ならば、VMware-Toolsを仮想Ubuntuにインストールしておく。

# 1.ビルド環境を整える
GNU Libcが導入されていないと、eclipse CDTでデバッグしようとすると「ソースが見つかりません」と出る。
最初に、build-essentialをインストールする。あと、eclipseはJavaアプリケーションなので、Java環境(ここでは、oracle-jdk)もインストールする。

Ubuntuから端末を開き下のコマンドを入力。

```:コマンド
$ sudo apt-get install build-essential -y
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer -y
```

# 2.eclipseをダウンロードする
eclipse公式サイト(https://www.eclipse.org/) からインストーラパッケージをダウンロードする。
　
# 3.eclipseをインストールする
eclipseインストーラパッケージ(eclipse-inst-linux64.tar.gz) を解凍する。

```:コマンド
$ tar -xvzf eclipse-inst-linux64.tar.gz
```

解凍が完了すれば、

- eclipse-installer (eclipseインストーラが入っている)

このディレクトリが生成されている。

eclipse-intallerディレクトリに移動して、**eclipse-inst**を実行する。

```:コマンド
$ ./eclipse-installer/eclipse-inst
```

インストーラから、どのプラグインをインストールするのか選ぶ画面が出るので、**Eclipse IDE for Java Developers**を選択する。

Installation folder(インストール先ディレクトリ：デフォルトでは*/home/User名/eclipse/<パッケージ>/*)を設定して、INSTALLボタンをクリックして実行する。

ユーザ規約の同意を確認する画面が出るので、**Remember accept license**にチェックを入れて、 **Accept**をクリックする。

インストールが終了したら、**LAUNCH**をクリックしてeclipseを起動する。

ワーキングディレクトリの場所(デフォルトは*/home/User名/eclipse-workspace/*)を聞いてくるので設定して、**Use this as the default and do not ask again**にチェックを入れLaunchをクリックする。

# 4.CDTプラグインの導入
eclipseから、
Help -> Install New Softwareを選択。

インストールウィザードから、
Work with:に 'Oxygen - http://download.eclipse.org/releases/oxygen' (バージョンによって異なります。)を選択してしばらく待つ。
その後、インストール可能なプラグインがリストアップする。
その中から、Programming Languages -> **C/C++ Development Tools**にチェックを入れて、**Next>**をクリックする。

インストールするパッケージを確認出来たら、**Next>**をクリックする。

ライセンス規約の同意を聞かれるので、**I accept the terms of the license agreement**のラジオボタンを選択して、**Finish**をクリックするとインストールが開始される。

インストールが完了すると、再起動するか聞いてくるので、**Restart Now**をクリックして再起動する。

これで、Ubuntuにeclipseを導入し、C, C++, Javaの開発環境が完成する。

# 5.細かな設定をする
Eclipseの設定を
Window -> Preference
で細かな設定を行う。

## フォントの設定
General -> Appearance -> Colors and Fonts を選択。
Colors and Fonts内から
Basic -> Text Font を選択して、**Edit...**ボタンで設定する。

## コードフォーマットの設定
### Java
Java -> Code Style -> Formatterを選択。
Active Profilesに好きなフォーマットを選択する。
**Edit...**ボタンをクリックして、Tab Policyを**Spaces Only**に選択する。
Indentation Size, Tab Sizeともに4を設定する。

筆者はAndroidに設定しているがAndroidについては、下記サイトを参考に設定している。
Android本家のフォーマッターを使ってコードを整形してみる． - Labo Memo. http://alice345.hatenablog.com/entry/2013/09/15/130603
### C/C++
C/C++ -> Code Style -> Formatterを選択。
Active Profilesに好きなフォーマットを選択する。
**Edit...**ボタンをクリックして、Tab Policyを**Spaces Only**に選択する。
Indentation Size, Tab Sizeともに4を設定する。
### フォーマット範囲の設定
HelloWorldプログラムの適当なところにカーソルを合わせ、[ctrl]+[shift]+[f]キーを押す。
Select Formatting Scopeダイアログで、どのくらいの範囲でコードフォーマットを行うのか聞いてくるので、**The entire file**を選択して、**Remember this choise and do not ask again**にチェックをいれ、**OK**をクリックする。

## C/C++プロジェクトの設定
C/C++ -> New C/C++ Project を選択。
Project type:からExcutable内にある各プロジェクトのToolchains:を**Linux GCC**に選択し**Apply**をクリックする。

続けて、C/C++ -> New C/C++ Project -> Makefile projectを選択する。
Discovery Optionタブを選択して、**Automate discovery of path and symbols**にチェックを入れる。

# 日本語化する
pleiades公式サイト(http://mergedoc.osdn.jp/#pleiades.html) からpleiadesプラグイン本体をダウンロードする。

ダウンロードしたpleiadesプラグイン本体zipファイル(pleiades.zip)を解凍する。
解凍したpleiadesプラグインディレクトリ(ここではpleiades/)の中から、

- features
- plugin
- readme

の3ディレクトリをコピーする。

コピーしたディレクトリは、eclipseの実行ファイルのあるディレクトリに貼り付ける。
その時にディレクトリーを統合(マージ)するかを聞いてくる。
**この操作をすべてのファイルとフォルダーに適用する**にチェックをいれ、**マージする**をクリックする。

コピーした後、eclipse.iniに次の文言を追記する。
(pleiades/readme/readme_pleiades.txt参照)

```:eclipse.ini
-Xverify:none
-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
```

これでeclipseの日本語は完了した。

以下に、日本語化を端末で行った場合のコマンドを載せておく。

```:コマンド
$ wget http://ftp.jaist.ac.jp/pub/mergedoc/pleiades/build/stable/pleiades.zip
$ unzip pleiades.zip -d pleiades
$ cp -ru pleiades/*/ <eclipseの実行ファイルのあるディレクトリ>
$ cd <eclipseの実行ファイルのあるディレクトリ>
$ vim eclipse.ini
```

## 追記
### build-essential 経由でgdb をインストールされた状態であっても、eclipse CDT からデバッグを行ってもデバッグできない状態になってしまう (Ubuntu 17.10で確認)。
原因はgdb 側でライブラリ関数のソースファイルがないという不具合のため。
手っ取り早い解消法として、gdb だけアンインストールして、ソースコードから手動で再インストールすればよい。

```:gdbアンインストール
$ sudo apt-get remove gdb -y
```

gdb のソースファイルは (http://www.sourceware.org/gdb/download/) から、ミラーサイトを追って、**gdb-8.1.tar.gz** (gdb-8.1 の場合) をダウンロードする。
ダウンロードしたファイルのあるディレクトリに端末を開き、下のコマンドを入力する。

```:gdb再インストール
$ tar xvzf gdb-8.1.tar.gz
$ cd gdb-8.1
$ sudo apt-get install texinfo -y
$ ./configure
$ make
$ sudo make install
$ make clean
```
これで、gdb が再インストールされて、ライブラリ関数のあるステップでも正しくデバッグを進めることができる。

しかし、この場合ではapt-get から更新することができないので、更新する場合は最新のソースファイルをダウンロードして、同様のコマンドを入力する。

gdb をビルドする際に、texinfo がインストールされていないとビルドできないので、必ずtexinfo をインストールしておく。 (参考 : https://qiita.com/t-tkd3a/items/71aeb4b6d87ae82f0389)

### eclipse.ini について
pleiades を使って日本語化する場合、追記する2行の文言は、必ずeclipse.ini の最後の行に追記しないと、起動できない。

また、どこかにシンボリックリンクを張る場合は、**-javaagent:** の部分に、さらにインストールされている場所にも定めないと、リンクから起動することができない。

```:eclipse.ini (シンボリックリンクを作る際)
-Xverify:none
-javaagent:<eclipse実行ファイルがあるディレクトリのフルパス>/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
```