log4cplus2.0+Qt5配置过程记录(Mingw32编译)

注:以下的配置过程以log4cplus-2.0.x和Qt5.11.1为例。

一、下载源码

源码地址:https://github.com/log4cplus

下载源码包,并解压。

  • log4cplus-2.0.x.zip
  • Catch-master.zip
  • ThreadPool-master.zip

二、CMake配置编译参数

1、给环境变量Path添加mingw的bin目录路径:/Qt5.11.1/Tools/mingw530_32\bin

2、在解压得到的log4cplus-2.0.x目录下创建一个名为mingw的目录(用于存放build结果)

3、打开Cmake,设置源码目录(log4cplus-2.0.x/)和构建目录(log4cplus-2.0.x/mingw/),然后点击Configure

log4cplus2.0+Qt5配置过程记录(Mingw32编译)_第1张图片

4、弹窗选择 MinGW Makefiles 和 Specify native compilers,点击next,配置编译器路径,

C :/Qt5.11.1/Tools/mingw530_32/bin/gcc.exe

C++ : /Qt5.11.1/Tools/mingw530_32/bin/g++.exe

然后点击finish,开始Configure过程。

log4cplus2.0+Qt5配置过程记录(Mingw32编译)_第2张图片

log4cplus2.0+Qt5配置过程记录(Mingw32编译)_第3张图片

5、Configure结束后,点击Generate。

(注:如果还想加上qt5debugappender功能,可以在配置项上勾选LOG4CPLUS_QT5,然后再Configure一次。之后会报一个错。这时,只需要在配置项Qt5Core_DIR中填入:/Qt5.11.1/5.11.1/mingw53_32/lib/cmake/Qt5Core,重新Configure和Generate即可。)

log4cplus2.0+Qt5配置过程记录(Mingw32编译)_第4张图片

三、mingw32编译

1、在编译前,log4cplus-2.0.x/catch/ 和 log4cplus-2.0.x/threadpool/ 目录缺少了源码。此时,之前下载的源码包Catch-master.zip和ThreadPool-master.zip就排上用场啦!我解压了这两个文件,然后将Catch-master/中的所有文件复制到log4cplus-2.0.x/catch/,将ThreadPool-master/中的所有文件复制到log4cplus-2.0.x/threadpool/。

(注:如果不执行步骤1,编译会报错。)

2、打开命令行,进入目录log4cplus-2.0.x/mingw/,执行命令mingw32-make。

log4cplus2.0+Qt5配置过程记录(Mingw32编译)_第5张图片

等待一段时间后,编译就完成了。此时,在log4cplus-2.0.x/mingw/bin/中已经生成了动态链接库:

  • liblog4cplusU.dll

注:如果在CMake中勾选了LOG4CPLUS_QT5选项,还将在log4cplus-2.0.x/mingw/bin/和log4cplus-2.0.x/mingw/qt5debugappender目录生成以下两个库文件:

  • liblog4cplusqt5debugappenderU.dll
  • liblog4cplusqt5debugappenderU.dll.a

四、在QtCreator中配置和测试

1、使用QtCreator新建工程,在.pro文件下添加路径配置:

INCLUDEPATH += /log4cplus-2.0.x/include

LIBS += /liblog4cplusU.dll

#如果要使用qt5debugappender,请把 liblog4cplusqt5debugappenderU.dll 和
 liblog4cplusqt5debugappenderU.dll.a 也加到LIBS中来

2、添加一个源文件main.cpp,代码如下:

#include 

int main()
{
    //用Initializer类进行初始化
    log4cplus::Initializer initializer;

    //以下两行将root logger配置为ConsoleAppender和SimpleLayout
    log4cplus::BasicConfigurator config;
    config.configure();

    //获取一个名为main的logger实例
    log4cplus::Logger logger = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("main"));

    //调用LOG4CPLUS_INFO从logger输出一条等级为INFO的日志消息“Hello world”
    LOG4CPLUS_INFO(logger, LOG4CPLUS_TEXT("Hello world"));

    return 0;
}

如果运行结果为:INFO - Hello world,那么log4cplus在Qt5中已经配置好了。

你可能感兴趣的:(QT,日志收集系统)