ルート探索エンジンのValhallaのビルド環境を作るたびに、詰まりどころが多くて悩んでいました。
ビルドできるようになるまでの環境セットアップ手順をメモします。(2020/05時点)
環境情報
macOS : Catalina(10.15.4)
XCode : 11.5
valhalla : 3.0.9
CLion : 2020.1.1
前提
基本的に公式の README.md の Building from Source
に沿って作業します。
Homebrew, anyenvの準備
# Homebrewインストール
$ bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
# anyenvセットアップ
$ brew install anyenv
$ anyenv init
$ echo 'eval "$(anyenv init -)"' >> ~/.zshrc
8.0以上のnodejsのインストール
README上ではnvmで記載していますが、ビルド済みのパッケージ利用で問題ないため今回はnodenvを利用します。
# anyenvからnodenvをインストール
$ anyenv install nodenv
$ nodenv -v
# 任意のバージョンをインストール
$ nodenv install -l
$ nodenv install 14.3.0
$ nodenv global 14.3.0
# インストールされていることを確認
$ which node
$ node -v
# vallharaに必要なパスを通す(こちらはnvmでも必要そう)
$ sudo ln -s $HOME/.anyenv/envs/nodenv/versions/14.3.0/include/node/v8.h /usr/include/v8.h
$ sudo ln -s $HOME/.anyenv/envs/nodenv/versions/14.3.0/include/node/uv.h /usr/local/include
$ sudo ln -s $HOME/.anyenv/envs/nodenv/versions/14.3.0/include/node/node.h /usr/local/include
# CLion上で見つけられないと怒られるので環境変数に追加
echo 'export NODEJS_INCLUDE_DIRS=$HOME/.anyenv/envs/nodenv/versions/14.3.0/include' >> ~/.zshrc
# npmかyarnか聞かれてエラーになるので空ファイル作成(npmを指定)
$ touch $(nodenv root)/default-packages
※参照 : Ubuntu_Bionic_Install.sh#L34-L37
README記載の必要パッケージをインストール(nvm, boost-pythonを除く)
$ brew install automake cmake libtool protobuf-c libspatialite pkg-config sqlite3 jq curl wget czmq lz4 spatialite-tools unzip
$ brew install bash coreutils binutils
$ brew install valhalla/valhalla/prime_server
boostのビルド
gitか boost.org からソースコードをダウンロードして導入。
macOSのシステムのpython2.7を利用するboost-pythonをインストールするが、brew上からだと認識してくれないのでビルドをする。
# ソースコードをダウンロード(tgzファイルをダウンロードしても良い)
$ git clone --recursive https://github.com/boostorg/boost.git
$ cd boost
$ git checkout develop
# pythonバインディング情報をインストール時に指定したいため確認
$ python --version
$ ./bootstrap.sh --with-python-version=2.7.16
# 配置ディレクトリを準備してインストール (jオプションはCPUのコア数)
$ mkdir /usr/local/Cellar/boost
$ ./b2 install -j4 --prefix=/usr/local/Cellar/boost
# cmakeに見つけてもらえるようシンボリックリンクを貼る
$ ln -s /usr/local/Cellar/boost /usr/local/opt/
$ ln -s /usr/local/Cellar/boost/include/boost /usr/local/include/
$ ln -s /usr/local/Cellar/boost/lib/*boost* /usr/local/lib/
※参考 : https://boostjp.github.io/howtobuild.html
最新のvalhalla本体をダウンロード
$ git clone --recurse-submodules https://github.com/valhalla/valhalla.git
CLion上でCMake実行
上記をcloneしたディレクトリを読み込めば勝手にcmakeされ、ビルド可能になるはずです。
おつかれさまでした。