2013-06-14 3 views
6

У меня есть несколько версий Boost, установленных (Windows 7/MinGW). Мне нужно использовать конкретный (1.53.0).Невозможно указать BOOST_ROOT для cmake

Я определил BOOST_ROOT в файле CMakeFiles.txt: SET(BOOST_ROOT C:/boost_1_53_0/), но я получаю эту ошибку:

> cmake . 
BOOST_ROOT=C:/boost_1_53_0/ 
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:1191 (message): 
    Unable to find the requested Boost libraries. 

    Boost version: 1.48.0 

    Boost include path: C:/Boost/include/boost-1_48 

    Detected version of Boost is too old. Requested version was 1.53 (or 
    newer). 

    The following Boost libraries could not be found: 

      boost_filesystem 

    No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the 
    directory containing Boost libraries or BOOST_ROOT to the location of 
    Boost. 

Я также определил BOOST_ROOT как переменную окружения, но с тем же результатом.

Почему cmake все еще ищет старую версию?

+0

Пожалуйста, посмотрите: Как я могу получить cmake, чтобы найти мою установку boost? http://stackoverflow.com/questions/3016448/how-can-i-get-cmake-to-find-my-boost-installation/13862264#13862264 – Offirmo

+0

@Offirmo: К сожалению, мне нужно создать его на Windows 7. – Pietro

+1

Попробуйте запустить 'cmake. -DBoost_DEBUG = ON', чтобы узнать больше о том, что делает CMake. Если он не найдет подходящую версию boost в указанном вами пути 'BOOST_ROOT', он будет продолжать искать в системных папках. Версия 1.53 может быть непригодна, например. если вы скомпилировали boost в общие библиотеки, но в вашем CMakeLists.txt вы не указали 'set (Boost_USE_STATIC_LIBS OFF)'. – Fraser

ответ

6

Если вы используете готовую версию повышающих библиотек для Visual Studio, они приходят в определенном аромат версии MSVC и битности. Мне нужно было указать CMake на это конкретное место - в моем случае, установив BOOST_ROOT в C:/local/boost_1_59_0 и BOOST_LIBRARYDIR на C: /local/boost_1_59_0/lib64-msvc-11.0.

8

Я также боролся с этой же проблемой некоторое время. Если это та же проблема, что и у меня, то проблема в том, что вы не используете конфигурацию CMake полностью свежий без кеша. Как только он запускается один раз и находит установку по умолчанию (C: \ Boost или/usr/include), она будет продолжать находить ее независимо от значения BOOST_ROOT. Поэтому обязательно удалите все сгенерированные файлы сборки. Затем установите BOOST_ROOT в желаемую отдельную установку, и она должна работать нормально.

Это также упоминаются jaor на ранее связанный вопросе: How can I get cmake to find my alternative boost installation?

15

Попробуйте это:

cmake -DBOOST_ROOT=path 
+1

Вы герой. –

Смежные вопросы