!!版权声明:本文为博主原创文章,版权归原文作者和博客园共有,谢绝任何形式的 转载!!
作者:mohist
注意️ 请选择对c++11支持完善的编译器, 因为spdlog一直更新。
本文演示环境: mac osx Mojave10.14.6 , Xcode version: 11.0
本文使用的是clang++对代码的编译
1、准备
A、spdlog源码(当前为1.7): https://github.com/gabime/spdlog
B、xcode 11.0 or 支持c++11的版本: https://developer.apple.com/download/more/ . 更为简单的方法就是appstore安装(傻瓜式)或者命令行安装。Xcode的安装,这里跳过。
2、解压
A、解压下载的spdlog源码。
B、打开解压文件夹,找到 include文件夹 或者 include/spdlog文件夹
3、使用
这里,我将创建一个command line app演示用法
A、创建c++工程
B、Xcode项目设置头文件寻找路径, 打开 上面创建的项目 demo -> Build Settings , 找到 Header Search Paths .
重点来了: 因为我们需要引用的头文件来自spdlog,这里需要设置Xcode的头文件寻找方式:相对路径,这样,好处是: 当我们将项目拷贝到其他电脑,也可正常编译。
注意, 我拷贝spdlog源码文件夹下的include文件夹到创建项目x_spdlog_demo的文件夹的x_spdlog_demo文件夹下(也可拷贝spdlog文件夹),见下图:
C、添加配置。
将 Header Search Paths 的值 设置为 : $(SRCROOT)/x_spdlog_demo 。
解释: 例如,我这里创建的项目名是: x_sdplog_demo, $(SRCROOT)的值是: x_spdlog_demo.xcodeproj 所在路径。这样设置,告诉xcode,去我们指定的目录下寻找头文件。
D、回到xcode的main.cpp 添加代码。
#include "include/spdlog/spdlog.h"
#include "include/spdlog/sinks/rotating_file_sink.h"
int main(int argc, const char * argv[])
{
// 1、console output
spdlog::info("Hello, {}!", "World");
// 2、log to file
auto rotating\_logger\_a = spdlog::rotating\_logger\_mt("log\_file\_a", "logs/ra.txt", 1024 \* 1024 \* 5, 3);
for (int i = 0; i < 1024; i++)
{
rotating\_logger\_a->info("index = {}", i);
}
spdlog::shutdown();
return 0;
}
--> 重点来了, 这里 引用 spdlog库头文件方式 与 上面 设置 Header Search Paths 有关。
1)、示例代码中,#include "include/spdlog/spdlog.h" , Xcode寻找为路径为: $(SRCROOT)/x_spdlog_demo/include/spdlog/spdlog.h 。 2)、若 Header Search Paths 配置为:$(SRCROOT)/x_spdlog_demo/include , 那么, 代码引用需要改为: #include "spdlog/spdlog.h" .
D、构建或者command+B. 发现报错,报错提示: 找不到: "XXXXXX /spdlog/common.h"。 打开文件: include/spdlog/spdlog.h。 将包含头文件的方式改为:include "XXX.h" 。我这里演示的, 需要改为: #include "include/spdlog/common.h" .
E、再次构建,发现还是找不到文件。 和D的步骤一致,找到错误提示,改为 include "XXX.h"的方式。 直到 构建成功。
F、构建成功,说明即可正常使用 spdlog 。 运行,并打开输出 目录, 可见程序已经创建日志文件并记录数据。
Xcode使用spdlog结束。
还等什么,继续学习 spdlog 源码吧。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章