2013-06-14 12 views
6

Mam wiele wersji Boost zainstalowanych (Windows 7/MinGW). Muszę użyć konkretnego (1.53.0).Nie można określić BOOST_ROOT dla cmake

zdefiniowałem BOOST_ROOT w pliku CMakeFiles.txt: SET(BOOST_ROOT C:/boost_1_53_0/), ale wciąż otrzymuję ten błąd:

> 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. 

ja również zdefiniowane BOOST_ROOT jako zmiennej środowiskowej, ale z takim samym skutkiem.

Dlaczego cmake wciąż szuka starej wersji?

+0

Proszę spojrzeć: Jak mogę uzyskać cmake, aby znaleźć instalację doładowania? http://stackoverflow.com/questions/3016448/how-can-i-get-cmake-to-find-my-boost-installation/13862264#13862264 – Offirmo

+0

@Offirmo: Niestety, potrzebuję zbudować to na Windows 7. – Pietro

+1

Spróbuj uruchomić 'cmake. -DBoost_DEBUG = ON', aby uzyskać więcej informacji o tym, co robi CMake. Jeśli nie znajdzie odpowiedniej wersji boost w podanej ścieżce 'BOOST_ROOT', będzie dalej szukać w folderach systemowych. Wersja 1.53 może nie być odpowiednia, np. jeśli skompilowałeś boost do wspólnych bibliotek, ale w twoim CMakeLists.txt nie określiłeś 'set (Boost_USE_STATIC_LIBS OFF)'. – Fraser

Odpowiedz

6

Jeśli używasz skompilowaną wersję bibliotek Boost Visual Studio, pochodzą one w specyficzny smak wersji MSVC i bitness. Musiałem skierować CMake do tej konkretnej lokalizacji - w moim przypadku ustawienie BOOST_ROOT na C:/local/boost_1_59_0 i BOOST_LIBRARYDIR na C: /local/boost_1_59_0/lib64-msvc-11.0 pomogło.

8

Przez pewien czas też zmagałam się z tym samym problemem. Jeśli jest to ten sam problem, który miałem, to problem polega na tym, że nie uruchamiasz konfiguracji CMake zupełnie świeżo bez pamięci podręcznej. Gdy uruchomi się raz i znajdzie domyślną instalację (C: \ Boost lub/usr/include), będzie ją nadal znajdować niezależnie od wartości BOOST_ROOT. Dlatego należy całkowicie usunąć wszystkie wygenerowane pliki kompilacji. Następnie ustaw BOOST_ROOT na żądaną oddzielną instalację i powinno działać poprawnie.

to również wspomniane przez jaor na poprzednio połączonego pytanie: How can I get cmake to find my alternative boost installation?

15

Spróbuj tego:

cmake -DBOOST_ROOT=path 
+1

Jesteś bohaterem. –