Mac で emacs の irony server がコンパイルできない時
連休中は久々にCでプログラミングでもしようかと思ったら、emacs の irony-mode がエラーを出して動きませんでした。(^^;
OS X 10.11 El Capitan の環境で、irony server のコンパイルに必要な llvm は brew でインストールしてあります。 READMEを読むと、brew で llvm をインストールする時は、 --with-clang オプションをつけるように指示がありますが、現在 brew でインストールされる llvm にこのオプションはありませんし、指定しなくても問題ありませんでした。
irony-mode の最新版をインストールした後、M-x irony-install-server を実行しますが、Mac だとこの方法ではエラーが出ます。なので、irony をインストールしたディレクトリー内の server ディレクトリに、 build というディレクトリを作成して、以下の操作は build のディレクトリ内に移動して行います。
そのまま irony-install-server で表示される内容で cmake を実行すると、includeファイルが見つからなかったり、libclang が見つからなかったり、リンカー実行時に c++ のライブラリを使うように指示する -lstdc++ オプションが指定されません。
irony-mode の Github の Issues を見たら、その対策が紹介されていました。それを参考に、以下のように cmake を実行したら、ようやく irony-server がコンパイルできました。
cmake -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ -DCMAKE_PREFIX_PATH=/usr/local/opt/llvm -DCMAKE_INSTALL_RPATH=/usr/local/opt/llvm -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE -DCMAKE_INSTALL_PREFIX\=/Users/"Your UserName"/.emacs.d/irony/ /Users/"Your UserName"/.emacs.d/elpa/irony-20170427.1601/server && cmake --build . --use-stderr --config Release --target install
"Your UserName"には、ご自分のホーム・ディレクトリを入れてください。また、irony のインストールされるディレクトリ名もバージョンアップなどで変更されますので注意が必要です。
また、これは必要ないかもしれませんが、brew で llvm をインストールした時に表示される・・・
export PATH="/usr/local/opt/llvm/bin:$PATH"
・・・も私は設定してあります。
(2017.08.25追記)
irony-20170821.1300では、M-x irony-server-install でコンパイルできるようになってました。
(2018.12.13追記)
irony-20181211.1959で再びコンパイル失敗する。 以下の記事の方法にて対処。