cmake 3.0.2 не может найти boost на 14.04

cmake 3.0.2 не может найти boost на 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?

Спасибо.

решение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}
)

В версии 16.10 мне пришлось убедиться в ее установке, libboost-all-devчтобы мой код продолжал компилироваться в Ubuntu.

sudo apt-get install libboost-all-dev

Предыдущие версии работали только с libboost-dev, как-то. Хотя, похоже, вы уже разобрались с этой частью, я просто хотел убедиться, что было четко указано, что в этом отношении произошло недавнее изменение.

решение3

Спасибо, Рохит.

В качестве альтернативного решения я скачал и собрал последнюю версию boost и добавил переменную BOOST_ROOT в ~/.profile следующим образом:

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. Однако она просто работает.

Надеюсь, кто-нибудь найдет лучшее решение.

Связанный контент