ソースからコンパイルされた最新の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で表示する必要がありますか?
ありがとう。
libboost-all-dev
のどのバージョンを使用していますか? v1.53.0を使用していると思います。
代わりにlibboost1.54-all-dev
をインストールしてみてください。
ありがとう、ロヒス。
代替ソリューションとして、boostの最新バージョンをダウンロードしてビルドし、次のようにBOOST_ROOT変数を〜/ .profileに追加しました。
export BOOST_ROOT=$HOME/work/boost_1_57_0
ヘッダー以外のライブラリを使用している場合、ブーストをビルドする必要があることに注意してください。
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}
)
16.10では、libboost-all-dev
をインストールして、Ubuntuでコードが引き続きコンパイルされるようにする必要がありました。
Sudo apt-get install libboost-all-dev
以前のバージョンは、何らかの形でlibboost-dev
のみで機能しました。すでにその部分を把握しているように見えますが、その点で最近の変更があったことを明確に述べたかっただけです。
私もubuntuでこのような厄介な状況に会います...
私の解決策は、単にfind_package
を使用するのではなく、リンクプロセスでライブラリを追加することです。
target_link_libraries( your_program boost_system boost_filesystem ... )
悪いことは、cmake
がboost
ライブラリの存在を検査できないことです。ただし、それは単に機能します。
誰かがより良い解決策を見つけられることを願っています。