spdlog库笔记 (二):编译、安装

安装

编译、运行平台

  • Linux,FreeBSD,OpenBSD,Solaris,AIX
  • Windows(MSVC 2013+,cygwin)
  • MacOS(clang 3.5+)
  • Andriod

编译、安装

直接拷贝include文件到用户的项目

由于spdlog是基于头文件实现的,实现代码都位于include目录下的头文件中。因此,可以拷贝include文件夹到你的构建树中,使用C++11编译器。

$ git clone https://github.com/gabime/spdlog.git$ cd spdlog && mkdir build && cd build$ cmake .. && make -j

项目(example示例)的CMake文件可以这样写:

# Copyright(c) 2019 spdlog authors Distributed under the MIT License (http://opensource.org/licenses/MIT)

cmake_minimum_required(VERSION 3.10)
project(spdlog_examples CXX)

if(NOT TARGET spdlog)
    # Stand-alone build
    find_package(spdlog REQUIRED)
endif()

# ---------------------------------------------------------------------------------------
# Example of using pre-compiled library
# ---------------------------------------------------------------------------------------
add_executable(example example.cpp)
target_link_libraries(example PRIVATE spdlog::spdlog)

# ---------------------------------------------------------------------------------------
# Example of using header-only library
# ---------------------------------------------------------------------------------------
if(SPDLOG_BUILD_EXAMPLE_HO)
    add_executable(example_header_only example.cpp)
    target_link_libraries(example_header_only PRIVATE spdlog::spdlog_header_only)
endif()

Windows下编译

使用git clone将源码下载到本地后,有两种编译方式:1)使用CMake GUI + VS 2022;2)使用VS 2022直接编译。

使用CMake-GUI步骤:
(1)设置源码路径、build路径、根据需要设置CMAKE_INSTALL_PREFIX(安装路径)

(2)然后依次点击Configure、Generate按钮,出现如图所示"Generating done"提示,说明生成VS工程文件。

(3)接下来,需要用VS (我用的VS Community 2022)打开build路径下的.sln解决方案文件,打开成功后如下图所示:

注意:如果CMAK_INSTALL_PREFIX指定的目录是系统盘,如C盘,需要管理员方式打开VS 2022,否则可能没有权限安装文件到系统盘。

(4)右键ALL_BUILD点击生成,从而编译目标,右键INSTALL点击生成,会安装库文件到前面CMAK_INSTALL_PREFIX指定的目录。

会生成2个文件夹include包含头文件,lib包含库文件。

至此,说明编译、安装成功。接下来,在自己的项目中引入并使用spdlog。

使用spdlog

Windows下使用spdlog

通过一个例程,演示如何在VS 2022上的APP工程使用spdlog记录日志。

1)设置头文件路径
首先将头文件路径(include)包含进项目的搜索头文件路径,或者直接将include目录下的文件拷贝到编译器MSVC的头文件目录。

2)设置库文件路径
将lib目录下的spdlogd.lib库文件路径包含进链接器的库文件路径,或者直接将lib目录下的文件拷贝到编译器MSVS的库文件目录。

3)在APP源码中#include spdlog库头文件及测试代码

以下代码来自spdlog自带的example/example.cpp例程(也可从这拷贝Basic example | 1.QuickStart | spdlog wiki

#include <iostream>

#include <spdlog/spdlog.h>
#include <spdlog/cfg/env.h>  // support for loading levels from the environment  variable
#include <spdlog/fmt/ostr.h> // support for user defined types

using namespace std;
using namespace spdlog;

int main()
{
       // Set the log level to "info" and mylogger to "trace":
       // SPDLOG_LEVEL=info,mylogger=trace && ./example
       spdlog::cfg::load_env_levels();
       spdlog::info("Welcome to spdlog version {}.{}.{}  !", SPDLOG_VER_MAJOR,  SPDLOG_VER_MINOR, SPDLOG_VER_PATCH);
       spdlog::warn("Easy padding in numbers like {:08d}", 12);
       spdlog::critical("Support for int: {0:d};  hex: {0:x};  oct: {0:o}; bin:  {0:b}", 42);
       spdlog::info("Support for floats {:03.2f}", 1.23456);
       spdlog::info("Positional args are {1} {0}..", "too", "supported");
       spdlog::info("{:>8} aligned, {:<8} aligned", "right", "left");
       return 0;
}

4)编译、运行APP
可从终端观察到日志输出如下:

参考

windows10 下使用 spdlog 总结(spdlog 1.7)


spdlog库系列:spdlog库笔记汇总

posted @ 2022-10-15 22:54  明明1109  阅读(3723)  评论(0编辑  收藏  举报