2014-07-01 44 views
3

我有問題boost::iostreams。我只想在一個函數中使用它們。 唯一的問題是與該行:在ubuntu下用cmake連接boost庫的C++:未定義的引用`boost :: iostreams :: zlib :: okay'

in.push(boost::iostreams::gzip_decompressor()); 

升壓在程序的其它部分中使用沒有任何問題或編譯錯誤。 但是如果我用這條線我得到的編譯錯誤:

undefined reference to `boost::iostreams::zlib::okay' 

它包括這樣的:

#include <boost/iostreams/filter/gzip.hpp> 

的CMakeLists.txt

add_library(backend 
    ... some files 
) 

find_package(Boost COMPONENTS system REQUIRED) 
include_directories(${Boost_INCLUDE_DIRS}) 
target_link_libraries(backend ${Boost_LIBRARIES}) 
+0

您應該將zlib添加到鏈接器輸入 – sehe

回答

6

find_package呼籲加速不完整。

您使用的所有來自Boost的非僅包含Header的庫都需要明確列出,以便${Boost_LIBRARIES}能夠正確填充。很容易忘記Boost的哪些部分是僅包含頭部的,哪些部分不是,但像您遇到的鏈接器錯誤總是一個明確的提示。

find_package(Boost REQUIRED COMPONENTS system iostreams) 

另外請注意,您可能在Linux上額外的依賴拉得到壓縮工作,爲suggested in the comments

+2

當天我將開始「獲取」CMake的基本功能...將是一個美好的一天 – sehe

相關問題