Mac で emacs の irony server がコンパイルできない時

連休中は久々にCでプログラミングでもしようかと思ったら、emacs の irony-mode がエラーを出して動きませんでした。(^^;

OS X 10.11 El Capitan の環境で、irony server のコンパイルに必要な llvmbrew でインストールしてあります。 READMEを読むと、brewllvm をインストールする時は、 --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 のインストールされるディレクトリ名もバージョンアップなどで変更されますので注意が必要です。

また、これは必要ないかもしれませんが、brewllvm をインストールした時に表示される・・・

 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で再びコンパイル失敗する。 以下の記事の方法にて対処。

qiita.com