Using boost.asio in cMake

2019-03-30 03:02发布

I am relatively new to cMake, and I'm trying use the boost asio library in my project.

I was able to get cMake to find other boost libraries such as smart_ptr and lexical_cast, but I get a linker error when I try to include boost/asio.hpp:

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

I then tried to change my CMakeLists.txt from

find_package(Boost 1.40.0 REQUIRED)

to

find_package(Boost 1.40.0 REQUIRED COMPONENTS asio)

cMake then asks for Boost_ASIO_LIBRARY_DEBUG and Boost_ASIO_LIBRARY_RELEASE. Am I going about this the right way, and if so where should I point cMake to find these libraries. (I am using cMake 2.6 and boost 1.40.0)

1条回答
戒情不戒烟
2楼-- · 2019-03-30 04:05

According to the ASIO documentation:

The following libraries must be available in order to link programs that use Boost.Asio:

  • Boost.System for the boost::system::error_code and boost::system::system_error classes.
  • Boost.Regex (optional) if you use any of the read_until() or async_read_until() overloads that take a boost::regex parameter.
  • OpenSSL (optional) if you use Boost.Asio's SSL support.

If you look at your link error, you will see that it is looking for the Boost.System library. I would try changing your CMakLists.txt to read:

find_package(Boost 1.40.0 REQUIRED system)
查看更多
登录 后发表回答