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

作者: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. [R] 保存pheatmap图片对象到文件

    一般我们使用pheatmap通过Rstudio交互得到的图片在plots的Export导出即可,如何保存对象到文件呢?这个需求在自动化流程中很常见,作者似乎也没说明. 生成示例数据: test = m ...

  2. 什么是总线、总线的类型、局部总线、局部总线类型和什么是接口方式?什么是IDE?什么是SCSI?

    在安装电脑系统时,进行内核配置时涉及到各种总线类型,有必要了解一下什么是总线.总线的类型.局部总线.局部总线类型和接口方式. 1)总线总线是一组通信线.在机器内部, 各部件通过总线连接; 对于外部设备 ...

  3. Spark3学习【基于Java】3. Spark-Sql常用API

    学习一门开源技术一般有两种入门方法,一种是去看官网文档,比如Getting Started - Spark 3.2.0 Documentation (apache.org),另一种是去看官网的例子,也 ...

  4. OAuth2.0实战!使用JWT令牌认证!

    大家好,我是不才陈某~ 这是<Spring Security 进阶>的第3篇文章,往期文章如下: 实战!Spring Boot Security+JWT前后端分离架构登录认证! 妹子始终没 ...

  5. Yarn的Tool接口案例

    目录 Yarn的Tool接口案例 Tool接口环境准备 1 新建Maven项目YarnDemo 编写代码 打包jar上传到集群 Yarn的Tool接口案例 Tool接口环境准备 之前写wordcoun ...

  6. 学习java 7.27

    学习内容: 创建树 Swing 使用JTree对象来代表一棵树,JTree树中结点可以使用TreePath来标识,该对象封装了当前结点及其所有的父结点. 当一个结点具有子结点时,该结点有两种状态: 展 ...

  7. A Child's History of England.32

    And so, in darkness and in prison, many years, he thought of all his past life, of the time he had w ...

  8. Linux基础命令---lftp登录ftp服务器

    lftp lftp指令可以用来登录远程ftp服务器,这是一个字符界面的文件传输工具. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. ...

  9. SpringMVC(1):SpringMVC入门

    一,MVC 概述 MVC:模型,视图,控制器,是一种软件设计规范,本质是将业务逻辑,数据,显示,分离的方式来编写代码:前后端分离 Model:数据模型,提供要展示的数据,一般我们都会把这两个分离开来. ...

  10. linux网络相关命令之脚本和centos启动流程

    nice 功用:设置优先权,可以改变程序执行的优先权等级.等级的范围从-19(最高优先级)到20(最低优先级).优先级为操作系统决定cpu分配的参数,优先级越高,所可能获得的 cpu时间越长. 语法: ...