cmake 3.0.2 não pode encontrar impulso em 14.04

5

Eu tenho o último cmake 3.0.2 compilado a partir de fontes, também libboost-all-dev instalado. E o 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 todas as variáveis depois de instalar o Boost para torná-lo visível para o cmake?

Obrigado.

    
por GLaz 20.11.2014 / 17:04

4 respostas

3

Qual versão do libboost-all-dev você está usando? Eu suponho que você está usando a v1.53.0.

Tente instalar o libboost1.54-all-dev .

    
por Rohith Madhavan 20.11.2014 / 17:47
1

Obrigado, Rohith.

Como uma 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

Note que esse aumento precisa ser criado se você estiver usando as bibliotecas que não são de cabeçalho.

    
por GLaz 20.11.2014 / 21:31
1

Eu também encontro uma situação tão estranha no Ubuntu ...

Minha solução simplesmente não usa find_package , mas adiciona as bibliotecas no processo de link

target_link_libraries( your_program boost_system boost_filesystem ... )

As coisas ruins são que cmake não pode examinar a existência da biblioteca boost . No entanto, simplesmente funciona.

Espero que alguém consiga descobrir uma solução melhor.

    
por bin 06.08.2015 / 16:35
1

Em 14.04 (e provavelmente mais cedo) para 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 o libboost-all-dev para que meu código continuasse sendo compilado no Ubuntu.

sudo apt-get install libboost-all-dev

As versões anteriores funcionavam com apenas libboost-dev , de alguma forma. Embora pareça que você já teve essa parte planejada, eu só queria ter certeza de que foi claramente mencionado que houve uma mudança recente nesse sentido.

    
por Alexis Wilke 21.02.2017 / 00:11

Tags