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?
Благодарю.
4 ответа
Какая версия libboost-all-dev
ты используешь? Я предполагаю, что вы используете v1.53.0.
Попробуйте установить libboost1.54-all-dev
вместо.
В 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
как-то. Хотя, похоже, вы уже разобрались с этой частью, я просто хотел убедиться, что было четко сказано, что в этом отношении произошли недавние изменения.
Спасибо, Рохит.
В качестве альтернативного решения я скачал и собрал последнюю версию boost и добавил переменную BOOST_ROOT в ~/.profile следующим образом:
export BOOST_ROOT=$HOME/work/boost_1_57_0
Обратите внимание, что повышение должно быть построено, если вы используете библиотеки без заголовка.
Я также встречаю такую неловкую ситуацию в Ubuntu...
Мое решение просто не использовать find_package
но добавление библиотек в процессе ссылки
target_link_libraries( your_program boost_system boost_filesystem ... )
Плохие вещи в том, что cmake
не может проверить существование boost
библиотека. Однако это просто работает.
Надеюсь, кто-то может найти лучшее решение.