2013-06-14 37 views
6

Tôi có nhiều phiên bản của Boost được cài đặt (Windows 7/MinGW). Tôi cần phải sử dụng một cái cụ thể (1.53.0).Không thể chỉ định BOOST_ROOT cho cmake

tôi xác định BOOST_ROOT trong file CMakeFiles.txt: SET(BOOST_ROOT C:/boost_1_53_0/), nhưng tôi cứ bị lỗi này:

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

tôi cũng xác định BOOST_ROOT như là một biến môi trường, nhưng với kết quả tương tự.

Tại sao cmake vẫn đang tìm phiên bản cũ?

+0

Vui lòng xem: Làm thế nào tôi có thể lấy cmake để tìm cài đặt tăng cường của tôi? http://stackoverflow.com/questions/3016448/how-can-i-get-cmake-to-find-my-boost-installation/13862264#13862264 – Offirmo

+0

@Offirmo: Thật không may tôi cần phải xây dựng nó trên Windows 7. – Pietro

+1

Hãy thử chạy 'cmake. -DBoost_DEBUG = ON' để biết thêm thông tin về những gì CMake đang làm. Nếu nó không tìm thấy phiên bản tăng cường thích hợp trong đường dẫn 'BOOST_ROOT' mà bạn đã chỉ định, nó sẽ tiếp tục tìm kiếm trong các thư mục hệ thống. Phiên bản 1.53 có thể không phù hợp, ví dụ: nếu bạn biên dịch tăng vào libs được chia sẻ, nhưng trong CMakeLists.txt của bạn, bạn chưa chỉ định 'set (Boost_USE_STATIC_LIBS OFF)'. – Fraser

Trả lời

6

Nếu bạn đang sử dụng một phiên bản biên dịch sẵn các thư viện Boost cho Visual Studio, họ đi vào một cụ thể hương vị của phiên bản MSVC và bitness. Tôi cần phải trỏ CMake đến vị trí cụ thể đó - trong trường hợp của tôi, thiết lập BOOST_ROOT thành C:/local/boost_1_59_0 và BOOST_LIBRARYDIR thành C: /local/boost_1_59_0/lib64-msvc-11.0 đã giúp.

8

Tôi cũng phải vật lộn với cùng một vấn đề này trong một thời gian. Nếu đây là vấn đề tương tự mà tôi gặp phải, thì vấn đề là bạn không chạy cấu hình CMake hoàn toàn mới mà không có bất kỳ bộ nhớ cache nào. Một khi nó chạy một lần và tìm thấy cài đặt mặc định (C: \ Boost hoặc/usr/include) nó sẽ tiếp tục tìm thấy rằng một bất kể giá trị của BOOST_ROOT. Vì vậy, hãy đảm bảo xóa hoàn toàn mọi tệp xây dựng đã tạo. Sau đó, thiết lập BOOST_ROOT để cài đặt riêng biệt mong muốn của bạn và nó sẽ hoạt động tốt.

này cũng được đề cập bởi jaor về vấn đề liên quan trước đó: How can I get cmake to find my alternative boost installation?

15

Hãy thử điều này:

cmake -DBOOST_ROOT=path 
+1

Bạn là một anh hùng. –

Các vấn đề liên quan