web-dev-qa-db-ja.com

cmake 3.0.2は14.04でブーストを見つけることができません

ソースからコンパイルされた最新の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で表示する必要がありますか?

ありがとう。

6
GLaz

libboost-all-devのどのバージョンを使用していますか? v1.53.0を使用していると思います。

代わりにlibboost1.54-all-devをインストールしてみてください。

4
Rohith Madhavan

ありがとう、ロヒス。

代替ソリューションとして、boostの最新バージョンをダウンロードしてビルドし、次のようにBOOST_ROOT変数を〜/ .profileに追加しました。

export BOOST_ROOT=$HOME/work/boost_1_57_0

ヘッダー以外のライブラリを使用している場合、ブーストをビルドする必要があることに注意してください。

2
GLaz

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のみで機能しました。すでにその部分を把握しているように見えますが、その点で最近の変更があったことを明確に述べたかっただけです。

1
Alexis Wilke

私もubuntuでこのような厄介な状況に会います...

私の解決策は、単にfind_packageを使用するのではなく、リンクプロセスでライブラリを追加することです。

target_link_libraries( your_program boost_system boost_filesystem ... )

悪いことは、cmakeboostライブラリの存在を検査できないことです。ただし、それは単に機能します。

誰かがより良い解決策を見つけられることを願っています。

1
bin