Homebrew でインストールした readline が使えない問題

macOS Sierra に Homebrew で readline をインストールした。

$ brew install readline

しかしながら、readline を参照するプログラムがコンパイルできないという問題が発生した。 /usr/local 以下をチェックしてみると、readline 関係の諸々は一切見当たらない。 なんで?と思ったのだが、どうやら readline は keg-only らしい。 keg-only なフォーミュラはシンボリックリンクが作られない。 keg-only かどうかは brew info で確認できる。

$ brew info readline
readline: stable 7.0.3 (bottled) [keg-only]
Library for command-line editing
/usr/local/Cellar/readline/7.0.3_1 (46 files, 1.5MB)
  Poured from bottle on 2017-06-23 at 02:36:12
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/readline.rb
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local,
because macOS provides the BSD libedit library, which shadows libreadline.
In order to prevent conflicts when programs look for libreadline we are
defaulting this GNU Readline installation to keg-only..

For compilers to find this software you may need to set:
    LDFLAGS:  -L/usr/local/opt/readline/lib
    CPPFLAGS: -I/usr/local/opt/readline/include

理由は様々なのだろうが、readline の場合は libedit と干渉するから、とのこと。 そんなわけで、-L/usr/local/opt/readline/lib -I/usr/local/opt/readline/include を自分の Makefile に書き加えたら コンパイルが通るようになった。 まあ事前に brew info しとけばハマらずに済んだということ。