2010-01-16 30 views
5

Tôi tương đối mới với cMake và tôi đang cố gắng sử dụng thư viện asio tăng trong dự án của mình.Sử dụng boost.asio trong cMake

tôi đã có thể để có được cmake để tìm thư viện tăng khác như smart_ptr và lexical_cast, nhưng tôi nhận được một lỗi mối liên kết khi tôi cố gắng bao gồm boost/asio.hpp:

LINK : fatal error LNK1104: cannot open file 'libboost_system-vc90-mt-1_40.lib'. 

Sau đó tôi đã cố gắng để thay đổi CMakeLists.txt của tôi từ

find_package(Boost 1.40.0 REQUIRED) 

để

find_package(Boost 1.40.0 REQUIRED COMPONENTS asio) 

cmake sau đó là ks cho Boost_ASIO_LIBRARY_DEBUGBoost_ASIO_LIBRARY_RELEASE. Tôi đang đi về điều này đúng cách, và nếu như vậy, nơi tôi nên điểm cMake để tìm các thư viện này. (Tôi đang sử dụng CMake 2.6 và tăng 1.40.0)

Trả lời

8

Theo ASIO documentation:

Các thư viện sau đây phải có sẵn để liên kết các chương trình mà sử dụng Boost.Asio:

  • Boost.System cho hệ thống tăng :: system :: error_code và boost :: system :: system_error.
  • Boost.Regex (tùy chọn) nếu bạn sử dụng bất kỳ quá tải read_until() hoặc async_read_until() nào có tham số tăng :: regex.
  • OpenSSL (tùy chọn) nếu bạn sử dụng hỗ trợ SSL của Boost.Asio.

Nếu bạn nhìn vào lỗi liên kết của bạn, bạn sẽ thấy rằng nó đang tìm kiếm các thư viện Boost.System. Tôi sẽ thử thay đổi CMakLists.txt của bạn để đọc:

find_package(Boost 1.40.0 REQUIRED system) 
+1

Và tất nhiên bạn cũng phải thêm target_link_libraries (YourExecutable $ {Boost_LIBRARIES}) –

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