C++ 使用CMake将Boost.Log添加到Boost库

C++ 使用CMake将Boost.Log添加到Boost库,c++,logging,boost,cmake,C++,Logging,Boost,Cmake,我正在尝试使用CMake将Boost.Log添加到Boost库中,但在尝试链接到我的程序时遇到了问题 我在Boost.Log周围添加了一个包装器,并生成了一个名为libcls\u utils.so的共享库。Boost库(以及Boost.Log)似乎是构建的,并在正确的位置正确生成所有.so文件,libcls\u utils.so 当我尝试链接文件时,出现以下错误: /media/data/workspace/mdxdev/tmp/staging/i686 mv linux/usr/lib/lib

我正在尝试使用CMake将
Boost.Log
添加到Boost库中,但在尝试链接到我的程序时遇到了问题


我在
Boost.Log
周围添加了一个包装器,并生成了一个名为
libcls\u utils.so
的共享库。Boost库(以及
Boost.Log
)似乎是构建的,并在正确的位置正确生成所有
.so
文件,
libcls\u utils.so

当我尝试链接文件时,出现以下错误:


/media/data/workspace/mdxdev/tmp/staging/i686 mv linux/usr/lib/libcls_utils.so:未定义对“boost::log\u mt\u posix::sinks::basic_text_file_backend::construct(boost::fil)”的引用‌​esystem2::基本路径,std::分配器>,boost::文件系统2::路径特性>常量和,std:_Ios\u Openmode,无符号长,boost::function0常量和,bool)

据我所知,我正在链接所有正确的库。以前有人成功地尝试过这个吗?我做错了什么?
我正在使用svn主干中的CMake 2.8.8、Boost-1.49.0和Boost.Log。

您可能需要定义:


您遇到了什么麻烦?我在Boost.Log周围添加了一个包装器,并生成了一个名为libcls_utils.so的共享库。Boost库(以及Boost.Log)似乎是构建的,并在正确的位置正确生成所有.so文件,我的libcls_utils.so也是如此。当我尝试链接我的文件时,我得到了:/media/data/workspace/mdxdev/tmp/staging/i686 mv linux/usr/lib/libcls_utils.so:对`boost::log\u mt\u posix::sinks::basic_text_file_backend::construct(boost::filesystem2::basic_path const&,std:\\ Ios\u Openmode,unsigned long,boost::function0 const&,bool)的未定义引用据我所知,我正在链接所有正确的库。需要注意的是,boost日志不是官方boost库的一部分。因此,在cmake中,如果您使用一些特定于boost的宏,它们将不会扩展到包含boost日志库。Boost1.49提供了版本2,但默认为3。可能Boost.Log是在没有任何版本覆盖的情况下构建的,这意味着API版本3,而您的包装器库是以某种方式构建的,它将Boost_文件系统_版本定义为2。
g++ -DBOOST_LOG_DYN_LINK blog.cpp -lboost_log -lpthread