log4cplus2.0+Qt5配置方法(Mingw32编译)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014695839/article/details/84743666

注:以下的配置过程以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添加:<Qt5安装目录>/Qt5.11.1/Tools/mingw530_32\bin

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

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

4、弹窗选择MinGW MakefilesSpecify native compilers,点击next按键,配置编译器路径:

C :<Qt5安装目录>/Qt5.11.1/Tools/mingw530_32/bin/gcc.exe

C++ : <Qt5安装目录>/Qt5.11.1/Tools/mingw530_32/bin/g++.exe

扫描二维码关注公众号,回复: 4341923 查看本文章

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

5、Configure结束后,点击Generate按键。

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

三、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

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

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

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

  • liblog4cplusU.dll

注:如果勾选了LOG4CPLUS_QT5选择,还会在bin目录和qt5debugappender目录生成

  • liblog4cplusqt5debugappenderU.dll
  • liblog4cplusqt5debugappenderU.dll.a

四、在QtCreator中配置和测试

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

INCLUDEPATH += <log4cplus-2.0.x目录的路径>/log4cplus-2.0.x/include

LIBS += <liblog4cplusU.dll目录的路径>/liblog4cplusU.dll

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

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

#include <log4cplus/log4cplus.h>

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中已经配置好了。

猜你喜欢

转载自blog.csdn.net/u014695839/article/details/84743666
今日推荐