Meu problema é:
Instalei o impulso a partir do código-fonte, tudo funciona bem. CMake encontra a biblioteca. Então percebi que precisava de bjam, instalei com o apt-get para o Ubuntu. Isso cria uma incompatibilidade de versão. Eu tentei desinstalar o boost instalado manualmente e instalei um pacote do sistema. Grande caos. O Cmake não consegue mais encontrar o Boost, não entendo como configurá-lo para corrigir esse problema.
Pergunta:
Detalhes:
Eu segui este tutorial para instalar o boost da fonte: link
Eu segui as instruções fáceis de compilação: baixei e extraí a última fonte, depois executei o bootstrap sem argumentos adicionais (install dir = default = usr / local) e usei sudo b2 install
O programa de amostra (com o regex) foi executado sem problemas. Então eu liguei o CMake e testei se o FindBoost funcionava. Esta questão mostra como fazer isso: link
Trabalhei como um encanto, não precisei configurar a lib e incluir caminhos, apenas usei o código da resposta aceita.
Infelizmente eu preciso de Boost.Python, que tem uma dependência adicional: bjam
.
Enquanto procurava por instruções de instalação para bjam
, percebi que poderia instalar o pacote Ubuntu libboost1.58-tools-dev
, ele contém bjam
.
Eu instalei este pacote e executei o exemplo de teste de início rápido a partir da fonte de reforço baixada.
O teste reclamou que havia uma incompatibilidade de versão. É isso mesmo, eu instalei o 1.61 (versão mais recente) da fonte. Mas meu pacote de sistema é 1.58 (que é a versão bjam
).
Agora tentei excluir o boost. Aparentemente, você tem que fazer isso manualmente, removendo todo o impulso relacionado a / usr / local. link
Então eu instalei o pacote do sistema libboost1.58-dev
como contrapartida para libboost1.58-tools-dev
.
Isso cria um novo problema: Cmake não consegue mais encontrar impulso. Ele reclama que a versão esperada é 1.5, mas a versão dada é 0.0.0
Esta questão (Como associar o programa C ++ ao Boost usando o CMake) descreve como configurar um caminho alternativo para bibliotecas de reforço (não a resposta aceita). Eu tentei fazer o mesmo.
Eu usei este Onde o apt-get instala a libqt4? para encontrar onde apt-get colocou meu pacote de boost do sistema. Mas isso só me diz que alguns arquivos estão em usr / include. Não consigo encontrar os arquivos lib.
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} /usr/include/boost")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "/.../boost/lib") <---- this path needs to be set
Também interessante:
Eu instalei o Eigen3 como um pacote de sistema com o apt-get, e o cmake pode encontrá-lo sem nenhuma configuração adicional.
Portanto, acho que ainda há vestígios dessa primeira instalação a partir do código-fonte. Acredito que, se tivesse acabado de instalar o pacote de inicialização do Ubuntu desde o início, não teria esse problema. Isso é possível?