
ソースからコンパイルした最新の cmake 3.0.2 があり、libboost-all-dev もインストールされています。find_package(Boost) では見つかりません。cmake の出力は次のとおりです。
Unable to find the requested Boost libraries.
Unable to find the Boost header files. Please set BOOST_ROOT to the root
directory containing Boost of BOOST_INCLUDEDIR to the directory containing
Boost's headers.
Boost をインストールした後、cmake で表示されるように手動で変数を設定する必要がありますか?
ありがとう。
答え1
どのバージョンをlibboost-all-dev
使用していますか? v1.53.0 を使用していると思います。
代わりにインストールしてみてくださいlibboost1.54-all-dev
。
答え2
14.04 (おそらくそれ以前) から 16.04 では、以下を使用できました。
find_package( Boost COMPONENTS filesystem system REQUIRED )
include_directories(
${BOOST_INCLUDE_DIRS}
)
target_link_libraries(${PROJECT_NAME}
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
}
ヘッダーだけが必要な場合は、コンポーネントを指定する必要はなく、次のものも指定する必要はありませんtarget_link_libraries()
。
find_package( Boost REQUIRED )
include_directories(
${BOOST_INCLUDE_DIRS}
)
libboost-all-dev
16.10 では、コードが Ubuntu 上で引き続きコンパイルされるようにインストールする必要がありました。
sudo apt-get install libboost-all-dev
以前のバージョンではlibboost-dev
、 だけで何とか動作していました。その部分は既に理解されているようですが、その点に関して最近変更があったことが明確に述べられていることを確認したかったのです。
答え3
ありがとう、ロヒト。
別の解決策として、最新バージョンの boost をダウンロードしてビルドし、次のように ~/.profile に BOOST_ROOT 変数を追加しました。
export BOOST_ROOT=$HOME/work/boost_1_57_0
非ヘッダー ライブラリを使用する場合は、boost をビルドする必要があることに注意してください。
答え4
私もUbuntuでそのような厄介な状況に遭遇しました...
私の解決策は、単に使用するのではなくfind_package
、リンクプロセスでライブラリを追加することです
target_link_libraries( your_program boost_system boost_filesystem ... )
悪い点は、ライブラリcmake
の存在を確認できないことですboost
。しかし、単純に動作します。
誰かがもっと良い解決策を見つけてくれることを願っています。