TL; DR
Boost 側でバグが直されるまでの応急処置として、CMakeLists.txt に下記を追加
if(EXISTS /usr/local/lib/cmake/Boost-1.71.0/BoostConfig.cmake)
set(Boost_NO_BOOST_CMAKE ON)
endif()
#find_package(Boost REQUIRED COMPONENTS ...)
事の発端
boost 1.70 までビルドできていたコードが、boost 1.71 でコケるようになった。
コンパイルは通り、リンクに失敗するので、(cmake が吐く) Makefile がおかしい?
試行錯誤
- cmake のアップデートを待った → アップデートされても改善されなかった
- boost 1.70 に戻す → brew upgrade で一括アップデートできないのが辛い
- brew tap を作る → bottle が効かず、boost のビルドに途轍もなく時間がかかる
そしてこの Issue を見つけた。
Boost 1.70 から提供され始めた BoostConfig.cmake の出来が悪いらしい。
そして 1.71 からは brew 側での workaround をやめてしまった、と。
というわけで、冒頭に記載した find_package を昔の挙動にするフラグが必要。