Cmake编译glog成功并在QT中测试成功步骤

发布于:2025-05-30 ⋅ 阅读:(17) ⋅ 点赞:(0)

glog是开源的日志记录系统,下载地址GitHub - google/glog: C++ implementation of the Google logging module

跟gflags有点相似,编译和测试过程比较周折,所以记录下来具体的编译和测试步骤。

编译环境:Windows+Cmake+Vs2022+Qt5.14.2

1、下载源码:GitHub - google/glog: C++ implementation of the Google logging module,解压缩下载文件到D:\glog-master。

2、打开Cmake软件,设置源码位置:D:\glog-master,设置构建位置:D:/glog-master/build_vs2022x64,点击【Configure】按钮进行配置如下:

配置核心选项:

2.1 CMAKE_INSTALL_PREFIX路径手动设置为D:\glog-master\install

2.2 不勾选WITH_UNWIND 选项。

2.3 先后两次生成和编译对应的静态库和动态库。

不生成动态库文件配置如下图:

生成动态库文件glog.dll文件配置如下图:

3、编译源码:点击【Configure】 按钮+【Generate】按钮后,再点击【Open Project】按钮,会使用VS2022打开glog.sln解决方案。

在VS2022软件中,设置编译方式为Release+x64模式,选择解决方案-右键选择【重新生成解决方案】菜单,系统编译成功。

在VS2022软件中,选择INSTALL项目,右键选择【重新生成】,则在Cmake中配置的安装位置【D:\glog-master\install】下会生成对应的包含文件和库文件等。

4、由于在QT中使用glog对应的库文件时会出现错误提示,因此需要在VS2022中编译glog项目的时候,选择解决方案中的glog项目和glog_internal项目,分别设置项目属性:【C/C++】-【代码生成】-【运行库】设置为【多线程 (/MT)】

5、在QT中新建项目testGlog(编译器为【msvc2017+x64】,项目路径为【D:\QtCode\testGlog】),拷贝在VS2022软件中生成的【D:\glog-master\install】目录下的所有glog相关的驱动文件夹到【D:\QtCode\testGlog\glog】目录下。

6、在QT中修改testGlog.pro文件中的配置项,新增glog库引用如下:

#MSVC编译器防止中文乱码设置
win32-msvc*: {
    QMAKE_CFLAGS *= /utf-8
    QMAKE_CXXFLAGS *= /utf-8
}

CONFIG(debug, debug|release) {
    QMAKE_CFLAGS_DEBUG += /MTd
    QMAKE_CXXFLAGS_DEBUG += /MTd
}

CONFIG(release, debug|release) {
    QMAKE_CFLAGS_RELEASE += /MT
    QMAKE_CXXFLAGS_RELEASE += /MT
    QMAKE_LFLAGS_RELEASE   += /RELEASE /NODEFAULTLIB:msvcrt.lib
}

INCLUDEPATH += $$PWD/glog/include
DEPENDPATH  += $$PWD/glog/include
LIBS += -L$$PWD/glog/lib -lglog

7、修改main.cpp文件代码如下,测试成功。

#define GLOG_NO_ABBREVIATED_SEVERITIES
#define GLOG_EXPORT
#define GLOG_NO_EXPORT
#include <windows.h>
#include <glog/logging.h>

using namespace google;
int main(int argc, char* argv[]) {
    google::InitGoogleLogging("test");
    google::SetLogDestination(google::GLOG_INFO, "../log/logtestInfo");
    google::SetLogDestination(google::GLOG_ERROR, "../log/logtestDebug");//不为ERROR建立日志文件

    google::SetStderrLogging(google::GLOG_INFO);
    google::SetStderrLogging(google::GLOG_ERROR);
    google::LogToStderr();
    for (int i = 0; i < 100; ++i){
        LOG(INFO) << "TEST" << i << " cookies";
    }
    google::ShutdownGoogleLogging();
}

8、运行测试项目、拷贝驱动文件【D:\glog-master\install\bin\glog.dll】到【D:\QtCode\testGlog\Release\release】目录下,再次运行,测试OK.