【问题标题】:Using boost.asio in cMake在 cMake 中使用 boost.asio
【发布时间】:2011-01-05 22:33:08
【问题描述】:

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

我能够让 cMake 找到其他 boost 库,例如 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_DEBUGBoost_ASIO_LIBRARY_RELEASE。我是否以正确的方式进行此操作,如果是这样,我应该在哪里指向 cMake 来找到这些库。 (我使用的是 cMake 2.6 和 boost 1.40.0)

【问题讨论】:

    标签: boost cmake boost-asio


    【解决方案1】:

    根据 ASIO documentation:

    以下库必须可用才能链接使用 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)
    

    【讨论】:

    • 当然你还必须添加 target_link_libraries(YourExecutable ${Boost_LIBRARIES})
    • Boost:asio 是一个只有头文件的库,所以我们不需要将它作为组件添加到find_package
    猜你喜欢
    • 1970-01-01
    • 2011-07-29
    • 2011-08-09
    • 2013-06-03
    • 2023-02-14
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多