LEMON Graph LibraryをMacで使う(成功とおもいきや)

前回,LEMON Graph Libraryのインストールに成功した.
と思ったが,そのライブラリを使うプログラムをコンパイルしてみたところ,うまく行かなかったのでメモ.
※この記事はLEMON Graph Libraryが悪いのではなく,brewで普通に入れたBoostと一緒に使おうとしたのが原因です
症状は,リンク時にリンカエラーで,boost::regex系の何かがないと言われる次のようなもの.

 "boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std
::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::all
ocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic_st
ring<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_t
raits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_rege
x<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boo
st::regex_constants::_match_flags)", referenced from:
      boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::
allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::basic
…

これの原因はおそらく,入れてるBoostがclangでコンパイルされているのに対して,lemonがgcc49でコンパイルされていることだと思う.
これを回避するには,Boostのbrewするときに –interactive で gcc49 を使ってインストールすれば良いと思うが,他のBoostを使っているプログラムにも影響が出そうなのでまだ試していない.

コメントする