
Eu tenho o cmake 3.0.2 mais recente compilado a partir de fontes, também libboost-all-dev instalado. E find_package(Boost) não consegue encontrá-lo. Aqui está a saída do 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.
Preciso definir manualmente alguma variável após instalar o Boost para torná-lo visível para o cmake?
Obrigado.
Responder1
Qual versão libboost-all-dev
você está usando? Presumo que você esteja usando a v1.53.0.
Tente instalar libboost1.54-all-dev
.
Responder2
Em 14.04 (e provavelmente antes) a 16.04, eu poderia usar estes:
find_package( Boost COMPONENTS filesystem system REQUIRED )
include_directories(
${BOOST_INCLUDE_DIRS}
)
target_link_libraries(${PROJECT_NAME}
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
}
Se você precisar apenas dos cabeçalhos, não será necessário especificar nenhum componente e nem target_link_libraries()
:
find_package( Boost REQUIRED )
include_directories(
${BOOST_INCLUDE_DIRS}
)
Com o 16.10, tive que instalar libboost-all-dev
para que meu código continuasse a ser compilado no Ubuntu.
sudo apt-get install libboost-all-dev
As versões anteriores funcionavam apenas com libboost-dev
, de alguma forma. Embora pareça que você já entendeu essa parte, eu só queria ter certeza de que foi claramente mencionado que houve uma mudança recente nesse aspecto.
Responder3
Obrigado, Rohith.
Como solução alternativa, baixei e criei a versão mais recente do boost e adicionei a variável BOOST_ROOT em ~/.profile assim:
export BOOST_ROOT=$HOME/work/boost_1_57_0
Observe que esse impulso deve ser criado se você estiver usando bibliotecas sem cabeçalho.
Responder4
Eu também encontro uma situação tão estranha no Ubuntu ...
Minha solução simplesmente não é usar, find_package
mas adicionar as bibliotecas no processo de link
target_link_libraries( your_program boost_system boost_filesystem ... )
O ruim é que cmake
não se pode examinar a existência da boost
biblioteca. No entanto, simplesmente funciona.
Espero que alguém possa descobrir uma solução melhor.