注:以下的配置过程以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 Makefiles和Specify 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
然后点击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中已经配置好了。