【发布时间】:2015-03-29 20:42:53
【问题描述】:
我正在尝试使用 C++11 编译 MultiBoost Library,但我无法使其工作。问题似乎出在内部使用的 BZip2 库上。更具体地说,有一个名为 Bzip2Wrapper 的包装器来为 C 库提供 c++ 接口。 C 库的所有文件都包含在同一个文件夹中。使用默认 make 文件时一切正常,但当我更改时
project(multiboost)
到
project(multiboost CXX)
我收到以下错误:
libMultiBoostLib.a(Serialization.cpp.o): In function `Bzip2WrapperReader::open(char const*)':
Serialization.cpp:(.text._ZN18Bzip2WrapperReader4openEPKc[_ZN18Bzip2WrapperReader4openEPKc]+0x97): undefined reference to `BZ2_bzReadOpen'
Serialization.cpp:(.text._ZN18Bzip2WrapperReader4openEPKc[_ZN18Bzip2WrapperReader4openEPKc]+0xc5): undefined reference to `BZ2_bzReadClose'
libMultiBoostLib.a(Serialization.cpp.o): In function `Bzip2WrapperReader::close()': ...
CMakeList 文件如下所示
# Bzip2
file(GLOB bzip2_SRCS "${BASEPATH}/Bzip2/*.cpp" "${BASEPATH}/Bzip2/*.c" "${BASEPATH}/Bzip2/*.h")
add_library(Bzip2Lib STATIC ${bzip2_SRCS})
#add_library(bzip2 SHARED ${bzip2_lib_SRCS})
...
# adding library to the exec
target_link_libraries(multiboost MultiBoostLib Bzip2Lib)
有什么想法会出错吗?我什至不知道问题是什么。 谢谢!
【问题讨论】:
-
这看起来不像我见过的任何 makefile。
-
@SamVarshavchik 项目好像在用CMake,这是现在常用的元构建系统。
-
是的,我的意思是 CMakeList 文件,将更新问题。
标签: c++11 cmake bzip2 makefile