使用cmake错误链接boost日志
linking boost log using cmake error
什么会导致以下问题:我尝试使用boost::登录cmake项目。
我的CMakeList.txt文件如下:
cmake_minimum_required(VERSION 3.10)
project(boostLogTest)
set(CMAKE_CXX_STANDARD 11)
add_executable(boostLogTest main.cpp)
ADD_DEFINITIONS(-DBOOST_LOG_DYN_LINK) ##### edit after DiCri's answer #####
find_package(Boost REQUIRED COMPONENTS log system)
if (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
message("Boost VERSION: ${Boost_VERSION}")
message("Boost INCLUDE_DIRS: ${Boost_INCLUDE_DIRS}")
message("Boost Boost_LIBRARY_DIRS: ${Boost_LIBRARY_DIRS}")
message("Boost LIBRARIES: ${Boost_LIBRARIES}")
TARGET_LINK_LIBRARIES(boostLogTest ${Boost_LIBRARIES})
endif ()
我的main.cpp文件如下:
#include <iostream>
#include <boost/log/trivial.hpp>
int main(int, char*[])
{
BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
BOOST_LOG_TRIVIAL(info) << "An informational severity message";
BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
BOOST_LOG_TRIVIAL(error) << "An error severity message";
BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";
return 0;
}
我的CMake输出是以下
-增强版本:1.64.0
--找到以下Boost库:
--日志
--系统
--日期时间
--日志设置
--文件系统
--线程
--正则表达式
--计时
--原子Boost版本:106400 Boost INCLUDE_DIRS:/usr/local/INCLUDE Boost Boost_LIBRARY_DIRS:/usr/local/lib Boost
库:/usr/local/lib/libboost_log.so/usr/local/lib/libboostrongystem.so/usr/local/lib/libboost_date_time.so/usr/local/lib/libboost_log_setup.so/usr/local/lib/libboost_filesystem.so/usr/local/lib/libboost_thread.so/usr/local/lib/libboost_regex.so/usr/local/lib/libboost_chrono.so/usr/local/lib/libboost_atomic.so
--配置已完成的
--生成完成的
--生成文件已写入:/home//CLionProjects/boostLogTest/cmake-build-debug
但在链接时,我收到以下错误消息:
[50%]链接CXX可执行boostLogTest
CMakeFiles/bootsLogTest.dir/main.cpp.o:在函数"main"中:
/主页//CLionProjects/boostLogTest/main.cpp:7:对`boost::log::v2s_mt_posix::trial::logger::get(('的未定义引用
/主页//CLionProjects/boostLogTest/main.cpp:7:对`boost::log::v2s_mt_posix::trial::logger::get(('的未定义引用
/主页//CLionProjects/boostLogTest/main.cpp:8:对`boost::log::v2s_mt_posix::trial::logger::get(('的未定义引用
/主页//CLionProjects/boostLogTest/main.cpp:8:对`boost::log::v2s_mt_posix::trial::logger::get(('的未定义引用
/主页//CLionProjects/boostLogTest/main.cpp:9:对
boost::log::v2s_mt_posix::trivial::logger::get()' CMakeFiles/boostLogTest.dir/main.cpp.o:/home/.../CLionProjects/boostLogTest/main.cpp:9: more undefined references to
的未定义引用boost::log::v2s_mt_posix::trial::logger::get(('follow。。。
在DiCri的回答后编辑:现在我收到以下错误消息:
[50%]链接CXX可执行boostLogTest
//usr/bin/ld:CMakeFiles/bootsLogTest.dir/main.cpp.o:对符号"pthread_rwlock_unlock@@GLIBC_2.2.5"的未定义引用
//lib/x86_64-linux-gnu/libphread.so.0:添加符号时出错:命令行中缺少DSO
collect2:错误:ld返回1退出状态
CMakeFiles/brustLogTest.dir/build.make:103:目标"boostLogTest"的配方失败
make[3]:***[boostLogTest]错误1
CMakeFiles/Makefile2:67:目标"CMakeFiles/brustLogTest.dir/all"的配方失败
make[2]:***[CMakeFiles/bootsLogTest.dir/all]错误2
CMakeFiles/Makefile2:79:目标"CMakeFiles/brustLogTest.dir/rule"的配方失败
make[1]:***[CMakeFiles/browsLogTest.dir/rule]错误2
Makefile:118:目标"boostLogTest"的配方失败
make:***[boostLogTest]错误2
如果我添加
set(Boost_USE_STATIC_LIBS ON)
库的路径更改为*.a文件,如:
Boost LIBRARIES: /usr/local/lib/libboost_log.a;/usr/local/lib/libboost_system.a;...
所有列出的库(*.so和*.a(都存在于此文件夹中。
我错过了什么?
只需尝试添加这行
#define BOOST_LOG_DYN_LINK 1
作为main.cpp文件的第一行,我认为它应该可以工作,有人在这里遇到了同样的问题
如果这不起作用,试着添加这行
ADD_DEFINITIONS(-DBOOST_LOG_DYN_LINK)
到CMake文件你需要添加OpenMP包太
- boost日志文件无法创建sample.log文件
- 可视化如何在我的C++程序中最好地使用相同的Boost日志
- 使用cmake错误链接boost日志
- 磁盘已满时,Boost日志崩溃
- BOOST ::日志是每次运行应用程序时都可能旋转文件
- boost ::日志 - 使用库/插件内的独立严重性级别
- 使用boost ::日志配置文件变量
- 输出用户定义的结构使用boost ::日志
- Boost日志在链接到共享库时无法正常工作
- Boost日志链接器错误
- Boost日志:如何使用Boost_Log_GLOBAL_LOGGER_INIT指定同步接收器
- 为什么Boost日志记录器操作不是常量
- boost日志格式单一属性,带有logging::init_from_stream
- 避免Boost日志中的泄漏—琐碎的使用
- 使用boost日志,Valgrind检查内存泄漏
- 与Boost日志进行交叉编译链接期间未解决的符号
- Boost日志-为什么不编译
- 在项目中使用boost日志时出错
- 在OSX 10.7.2上使用boost 1.48的boost日志
- Boost日志不显示自定义时间戳