在 CMake 中使用 boost.asio

问题描述 投票:0回答:1

我对 CMake 比较陌生,我正在尝试在我的项目中使用 boost asio 库。

我能够让 CMake 找到其他增强库,例如 smart_ptr 和 lexical_cast,但是当我尝试包含时出现链接器错误

boost/asio.hpp

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

然后我尝试更改我的 CMakeLists.txt

find_package(Boost 1.40.0 REQUIRED)

find_package(Boost 1.40.0 REQUIRED COMPONENTS asio)

CMake 然后要求

Boost_ASIO_LIBRARY_DEBUG
Boost_ASIO_LIBRARY_RELEASE
。我是否以正确的方式解决这个问题,如果是这样,我应该指向 CMake 哪里来找到这些库。 (我正在使用 CMake 2.6 和 boost 1.40.0)

boost cmake boost-asio
1个回答
25
投票

根据 ASIO 文档

必须提供以下库才能链接使用 Boost.Asio 的程序:

  • Boost.System 用于 boost::system::error_code 和 boost::system::system_error 类。
  • Boost.Regex(可选)如果您使用任何采用 boost::regex 参数的 read_until() 或 async_read_until() 重载。
  • OpenSSL(可选)如果你使用 Boost.Asio 的 SSL 支持。

如果您查看链接错误,您会发现它正在寻找 Boost.System 库。我会尝试将您的 CMakLists.txt 更改为:

find_package(Boost 1.40.0 REQUIRED system)
© www.soinside.com 2019 - 2024. All rights reserved.