cmake 3.0.2 не может найти повышение на 14.04

5

У меня есть последний 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?

Спасибо.

    
задан GLaz 20.11.2014 в 17:04
источник

4 ответа

3

Какую версию libboost-all-dev вы используете? Я предполагаю, что вы используете v1.53.0.

Попробуйте вместо этого установить libboost1.54-all-dev .

    
ответ дан Rohith Madhavan 20.11.2014 в 17:47
источник
1

Спасибо, Rohith.

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

export BOOST_ROOT=$HOME/work/boost_1_57_0

Обратите внимание: этот boost должен быть создан, если вы используете его не-заголовковые библиотеки.

    
ответ дан GLaz 20.11.2014 в 21:31
1

Я также встречаю такую ​​неловкую ситуацию в ubuntu ...

Мое решение просто не использует find_package , но добавляет библиотеки в процесс ссылки

target_link_libraries( your_program boost_system boost_filesystem ... )

Плохая вещь заключается в том, что cmake не может проверить существование библиотеки boost . Однако он просто работает.

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

    
ответ дан bin 06.08.2015 в 16:35
1

В 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 , каким-то образом. Хотя похоже, что вы уже выяснили эту часть, я просто хотел удостовериться, что было четко указано, что в последнее время произошли изменения.

    
ответ дан Alexis Wilke 21.02.2017 в 00:11