!!版权声明:本文为博主原创文章,版权归原文作者和博客园共有,谢绝任何形式的 转载!!

作者: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 源码吧。

xcode使用spdlog(1.7)总结的更多相关文章

  1. Xcode 锁终端

    锁终端 输入: <1>cd /Applications/Xcode.app 回车 结果显示: Xcode.app 输入: <2>sudo chown -hR root:whee ...

  2. xcode低版本调试高版本真机系统

    低版本xcode调试本真机高版本系统 //打开此路径把最新的文件拷贝到这里就可以了 /Applications/Xcode.app/Contents/Developer/Platforms/iPhon ...

  3. 在xcode中用 swift 进行网络服务请求

    xcode集成开发环境是运行于Mac苹果电脑上用于开发swift应用程序的工具,利用xcode可以很方便.直观的开发OS X和iOS系统所支持的应用程序. 1 开发环境: Mac OS 10.11 X ...

  4. Xcode自定义代码块

    到现在才发现原来Xcode有自定义代码块这么神奇的功能,能简化很多无聊的敲重复代码的工作,真是感叹我怎么才知道!!! 具体的设置流程见:http://nshipster.cn/xcode-snippe ...

  5. Xcode7使用插件的简单方法&&以及怎样下载到更早版本的Xcode

    Xcode7自2015年9上架以来也有段时间了, 使用Xcode7以及Xcode7.1\Xcode7.2的小伙伴会发现像VVDocumenter-Xcode\KSImageNamed-Xcode\HO ...

  6. Xcode 8 日志输出乱码问题

    更新到Xcode 8的同学应该都遇到了这个问题:用Xcode 8运行项目,日志会疯狂的刷,就像下面这种图一样:

  7. Mac下QT错误,Xcode配置解决办法

    出现错误: Xcode not set up properly. You may need to confirm the license agreement by running / 解决办法如下: ...

  8. 加快XCode的编译链接速度(200%+)—XCode编译速度慢的解决方案

    最近在开发一个大项目的时候遇到一个很头疼的问题,由于项目代码较多,每次都要编译链接1分钟左右,调试的时候很浪费时间,于是研究了一下如何提高编译链接的速度,在这里分享给大家. 提升编译链接的速度主要有以 ...

  9. Xcode 运行程序,左侧memory 不显示内存

    运行程序后,xcode 不显示当前使用的内存情况,问题是打开了僵尸--enable zoombie Objects,关闭即可 打开 product--->SCheme-->EditSChe ...

随机推荐

  1. GWAS与GS模型介绍与比较

    目录 1.GWAS模型 1.1卡方检验 1.2 相关性系数的t检验 1.3 一般线性模型GLM 1.4 混合线性模型MLM 1.5 压缩混合线性模型CMLM 1.6 SUPER 1.7 FarmCPU ...

  2. zabbix_get

    zabbix_get是一个命令行工具,可用于从一个远程的Zabbix探针获取监控数据. 1.2 用法 zabbix_get [-hV] [-s <host name or IP> ] [- ...

  3. Django创建多对多表关系的三种方式

    方式一:全自动(不推荐) 优点:django orm会自动创建第三张表 缺点:只会创建两个表的关系字段,不会再额外添加字段,可扩展性差 class Book(models.Model): # ... ...

  4. markdown语法之如何使用LaTeX语法编写数学公式

    CSDN-markdown语法之如何使用LaTeX语法编写数学公式 目录 目录 正文 标记公式 行内公式 块级公式 上标和下标 分数表示 各种括号 根号表示 省略号 矢量表示 间隔空间 希腊字母 特殊 ...

  5. Spring Cloud 2021.0.0 正式发布,第一个支持Spring Boot 2.6的版本!

    美国时间12月2日,Spring Cloud 正式发布了第一个支持 Spring Boot 2.6 的版本,版本号为:2021.0.0,codename 为 Jubilee. 在了解具体更新内容之前, ...

  6. 7 — 简单了解springboot中的thymeleaf

    1.官网学习地址 https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html 2.什么是thymeleaf? 一张图看明白: 解读: ...

  7. java Random()用法

    1.random.nextInt() random.nextIn()的作用是随机生成一个int类型,因为int 的取值范围是 -2147483648--2147483647 ,所以生成的数也是处于这个 ...

  8. day9 图书设计项目

    总路由层url from django.conf.urls import url from django.contrib import admin from app01 import views ur ...

  9. soapui pro 5.1.2 的破解方法

    Protection-4.6,和scz.key这两个文件能破解5.1.2的SoapUI 的Pro版本,mac 和 windows均可.1.拷贝Protection-4.6.jar到soapui安装的l ...

  10. Oracle 学习PL/SQL

    先上一张实用的图:用于转义字符的. SQL> select chr(42) ||'is what?' from dual; CHR(42)||---------*is what? 想转义哪个就转 ...