吭呲了俩小时搞定,这效率真够可以的。扒一堆博客,个个写的都不爽利。
预备:vs2017、cmake、glog
cmake安装文件去官网找,个人下载的msi文件直接安装的,安装时默认是不添加到环境变量,修改为为所有用户添加到环境变量。本地安装完成后,cmd查看:cmake --version。
glog从github下载。
glog文件夹下打开cmd,依次命令:
cmake .
cmake --build .
编译成功后,会自动生成本机vs对应版本的lib库:glog\Debug\glogd.lib,默认生成win32的debug库。
将文件夹glog\src\windows\glog与上述lib文件拷贝到新建项目中,工程添加宏定义:
GLOG_NO_ABBREVIATED_SEVERITIES
GOOGLE_GLOG_DLL_DECL=
然后就可以正常使用了。
#include "pch.h"
#include <iostream>
#include "glog/logging.h"
int main(int argc, char* argv[])
{
system("mkdir Log && cd Log && mkdir info warning error fatal");
google::InitGoogleLogging("");
google::SetLogDestination(google::GLOG_INFO,"Log/info/");
google::SetLogDestination(google::GLOG_WARNING, "Log/warning/");
google::SetLogDestination(google::GLOG_ERROR, "Log/error/");
google::SetLogDestination(google::GLOG_FATAL, "Log/fatal/");
LOG(INFO) << "info 005";
LOG(WARNING) << "warning 005";
LOG(ERROR) << "error 005";
//LOG(FATAL) << "fatal 005";
google::ShutdownGoogleLogging();
return 0;
}
如果想生成x64的debug或者release库,可以修改glog中cmake配置文件生成其它平台的lib库(我不会,第一次接触cmake,有点懵,这玩意跨平台能力这么强,相信以后肯定会普及起来的!),也可以使用cmake gui工具生成。
注:Optional toolset to use填入:host=x64(其它博客写了这一点,截图时忘了。不过我没写,也照样生成行x64位的了);点击Configure执行完毕后,再点击Gernerate,会生成sln解决方案,打开sln后编译一下工程,再拷贝生成的64位的 lib 和 lib/dll 使用。
下图箭头所指地方,如果打勾,debug和release都会生成 lib+dll;如果不打勾,仅生成lib。
用的时候发现低级别日志会记录高级别日志,若要改动,参考一篇博客,然后重新cmake,生成新的lib库进行使用。
另外,glog个人没有找到格式化输出设置,可以参考另一篇博客,我直接将俩功能函数添加进使用工程的 logging.h 里了。
即在logging.h中添加以下代码:
template<typename T>
std::string pack_string(const T &value) {
std::stringstream ss;
ss << value;
return ss.str();
}
template<typename T, typename... Args>
std::string pack_string(const T &value, Args... args) {
std::stringstream ss;
ss << value << pack_string(args...);
return ss.str();
}
#define ADDTAG LOG(INFO) << pack_string("Enter ", __FUNCTION__);
#define ADDLEAVE LOG(INFO) << pack_string("Leave ", __FUNCTION__);
同时设置:项目工程----> 属性 ---> c/c++ --> 语音 --> 符合模式 修改成否。