Sad*_*dik 3 c++ boost gzip cmake
我有问题boost::iostreams
.我想只在一个函数中使用它们.唯一的问题是这一行:
in.push(boost::iostreams::gzip_decompressor());
Run Code Online (Sandbox Code Playgroud)
Boost用于程序的其他部分,没有任何问题或编译错误.但是,如果我使用这一行,我得到编译错误:
undefined reference to `boost::iostreams::zlib::okay'
Run Code Online (Sandbox Code Playgroud)
它包括这样:
#include <boost/iostreams/filter/gzip.hpp>
Run Code Online (Sandbox Code Playgroud)
的CMakeLists.txt
add_library(backend
... some files
)
find_package(Boost COMPONENTS system REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})
target_link_libraries(backend ${Boost_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)
你find_package
对Boost的呼吁是不完整的.
您使用的所有来自Boost的非标头库都需要明确列出${Boost_LIBRARIES}
才能正确填充.很容易忘记Boost的哪些部分只是标题,哪些不是,但是你遇到的链接器错误总是一个明确的暗示.
find_package(Boost REQUIRED COMPONENTS system iostreams)
Run Code Online (Sandbox Code Playgroud)
另请注意,您可能需要在Linux上引入其他依赖项以使压缩工作,如评论中所示.