NAOqi C++ 開発環境のインストール (macOS Sierra 版)


## はじめに

- [NAOqi C++ 開発環境のインストール(OS X 環境)](http://qiita.com/Suna/items/153a69bbc71e0d029490)

改めて環境を作り直してみました。
 
## 環境
- MacBook (Retina, 12-inch, Early 2016)
- macOS Sierra 10.12.1
- Xcode Version 8.1 (インストール済み)
- Python 2.7.10 (macOS Sierra 同梱)

## コンパイラ & IDE 準備 (Compiler and IDE)

Xcode Version 8.1 をインストール済みです。

## クロスプラットフォーム ビルド システムの準備 (Cross-platform build system)

まず CMake と Python 2.7 が必要になります。

### CMake のインストール

[CMake 公式サイト](https://cmake.org/download/) から Mac 版をダウンロードし、インストールします。今回は実施時の Latest Release (3.6.3) を使用します。

![スクリーンショット 2016-11-09 3.17.00.png](https://qiita-image-store.s3.amazonaws.com/0/20418/249085c6-dcdb-eabc-ec68-f68ff7633bda.png "スクリーンショット 2016-11-09 3.17.00.png")

### CMake のパスを追加

インストール後、コマンドラインからも使えるようにパスを追加します。

```bash
$ vi .bash_profile
$ cat .bash_profile
export PATH=/Applications/CMake.app/Contents/bin/:$PATH
$ source .bash_profile
```

### CMake の動作確認

```bash
$ cmake --version
cmake version 3.6.3

CMake suite maintained and supported by Kitware (kitware.com/cmake).
```

### Python の動作確認

macOS Sierra にデフォルトで入っている 2.7.10 をそのまま使用します。

```bash
$ python --version
Python 2.7.10
```

## qiBuild インストール (qiBuild Installation)

pip でインストールします。

```
$ pip install qibuild --user
Collecting qibuild
  Using cached qibuild-3.11.6-py2-none-any.whl
Requirement already satisfied: virtualenv in /Library/Python/2.7/site-packages (from qibuild)
Installing collected packages: qibuild
Successfully installed qibuild-3.11.6
```

```bash
$ qibuild --version
qibuild version 3.11.6
Using Python code from /Users/Suna/Library/Python/2.7/lib/python/site-packages
Using CMake code from /Users/Suna/Library/Python/2.7/share/cmake
```

qibuild の設定を行います。設定ファイルが .config/qi/qibuild.xml として作成されるようです。

```bash
$ qibuild config --wizard
Found CMake: /Applications/CMake.app/Contents/bin/cmake
:: Please choose a generator
   1 Unix Makefiles 	(default)
   2 Ninja
   3 Xcode
   4 CodeBlocks - Ninja
   5 CodeBlocks - Unix Makefiles
   6 CodeLite - Ninja
   7 CodeLite - Unix Makefiles
   8 Eclipse CDT4 - Ninja
   9 Eclipse CDT4 - Unix Makefiles
   10 KDevelop3
   11 KDevelop3 - Unix Makefiles
   12 Kate - Ninja
   13 Kate - Unix Makefiles
   14 Sublime Text 2 - Ninja
   15 Sublime Text 2 - Unix Makefiles
> 1
:: Please choose an IDE
   1 None 	(default)
   2 QtCreator
   3 Eclipse CDT
   4 Xcode
> 1
```

```bash
$ cat ~/.config/qi/qibuild.xml
<qibuild version="1">
  <defaults>
    <env />
    <cmake generator="Unix Makefiles" />
  </defaults>
</qibuild>
```

## C++ SDK インストール (SDK Installation)

こちらからダウンロードします。今回は「C++ SDK 2.4.3 Mac 64」をダウンロードしてきました。

- https://community.ald.softbankrobotics.com/en/resources/software/language/en-gb


```bash
$ cd
$ mkdir sdk
$ cd sdk
$ mv ~/Downloads/naoqi-sdk-2.4.3.28-mac64.tar .
$ tar xvf naoqi-sdk-2.4.3.28-mac64.tar
$ cd naoqi-sdk-2.4.3.28-mac64
$ qibuild init
```

## コンパイル & サンプル実行 (Compile and run an example)

### 使用する toolchain の設定

```bash
$ qitoolchain create mytoolchain /Users/Suna/sdk/naoqi-sdk-2.4.3.28-mac64/toolchain.xml
Adding packages
* (1/1) libnaoqi
Done

$ qibuild add-config mytoolchain -t mytoolchain --default
```

### 

```bash
$ cd core/sayhelloworld/
```

### configure & make

```bash
$ qibuild configure
Current build worktree: /Users/Suna/sdk/naoqi-sdk-2.4.3.28-mac64
Using toolchain: mytoolchain
* (1/1) Configuring sayhelloworld
-- The C compiler identification is AppleClang 8.0.0.8000042
-- The CXX compiler identification is AppleClang 8.0.0.8000042
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Using qibuild 3.11.6
-- Binary: sayhelloworld
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/Suna/sdk/naoqi-sdk-2.4.3.28-mac64/doc/dev/cpp/examples/core/sayhelloworld/build-mytoolchain

$ qibuild make
Current build worktree: /Users/Suna/sdk/naoqi-sdk-2.4.3.28-mac64
Using toolchain: mytoolchain
* (1/1) Building sayhelloworld in Debug
Scanning dependencies of target sayhelloworld
[ 50%] Building CXX object CMakeFiles/sayhelloworld.dir/sayhelloworld.cpp.o
[100%] Linking CXX executable sdk/bin/sayhelloworld
[100%] Built target sayhelloworld
```

### 実行ファイルの確認

```bash
$ ls -l build-mytoolchain/sdk/bin/
total 792
-rwxr-xr-x  1 Suna  staff  403884 11  9 04:49 sayhelloworld
```

### 動作確認

実行するのに、環境変数 DYLD_LIBRARY_PATH を設定する必要があるのですが、El Capiptan から設定ができなくなっています。SIP を無効化すると設定ができるようになるのですが、仕組みを理解して無効化していないので、実際に試してみる場合は注意願います。

- [Mac OS X El CapiptanでSIPを無効化する - Qiita](http://qiita.com/zaburo/items/c650cda45c858fe856a9)
- [SIPをもっと深く知ってみよう！　〜SIPは一体何を保護しているのか〜 - Qiita](http://qiita.com/whitefox_105/items/0b70f7a504dcb72788e6)

#### DYLD_LIBRARY_PATH の設定

```bash
$ vi ~/.bash_profile
$ cat ~/.bash_profile
export PATH=/Applications/CMake.app/Contents/bin:$PATH
export DYLD_LIBRARY_PATH=~/sdk/naoqi-sdk-2.4.3.28-mac64/doc/dev/cpp/examples/core/sayhelloworld/build-mytoolchain/sdk/lib
$ source ~/.bash_profile
```

### 実行

```bash
$ cd build-mytoolchain/sdk/bin
$ ./sayhelloworld
Wrong number of arguments!
Usage: say NAO_IP
```

実機には繋いでいないけど、取り急ぎ動いているようです。