Boost.Log with CMake causing undefined reference error

后端 未结 3 1616
故里飘歌
故里飘歌 2020-12-14 17:17

I am trying to use the new Boost.Log library in a project I am working on. The project is built with CMake. I am receiving link errors claiming that the linker has come acro

3条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-14 17:49

    It looks like it boils down to linking to the shared version of Boost.Log.

    There is a bit of detail on the issue in the docs for Boost.Log Your error message mentions the namespace boost::log::v2s_mt_posix and from the docs, this implies the linker is expecting to link to a static version of Boost.Log.

    If you want to link to the shared version, it seems you need to define BOOST_LOG_DYN_LINK or BOOST_ALL_DYN_LINK, i.e. in your CMakeLists.txt add:

    ADD_DEFINITIONS(-DBOOST_LOG_DYN_LINK)
    

    If you want to link to the static version of Boost.Log, instead you need to add a CMake variable before calling FIND_PACKAGE(Boost ...):

    SET(Boost_USE_STATIC_LIBS ON)
    FIND_PACKAGE(Boost 1.54 COMPONENTS log REQUIRED)
    

    For further variables which affect how CMake finds Boost, see the docs for FindBoost.

提交回复
热议问题