`vcpkg` 微软开源的 C/C++ 包管理工具的使用和安装使用spdlog

vcpkg微软开源的 C/C++ 包管理工具 ,类似于 Python 的 pip、Node.js 的 npm、Rust 的 cargo

它的主要作用是:帮助你快速下载、编译、安装和管理 C/C++ 第三方库,并自动配置到你的项目(比如 Visual Studio、CMake、MSBuild)。


🌟 vcpkg 的特点

  1. 跨平台

    支持 Windows、Linux、macOS,可以在不同平台上用同样的命令获取依赖。

  2. 库的集中管理

    你只需要运行一条命令,就能安装常用的库(如 boostopensslzlibfmtspdlog 等),不用自己找源码编译。

    bash 复制代码
    vcpkg install boost
    vcpkg install openssl:x64-windows
  3. 自动集成 IDE

    • 在 Visual Studio / Visual Studio Code 中,可以自动找到通过 vcpkg 安装的库。
    • 在 CMake 项目里,可以用 -DCMAKE_TOOLCHAIN_FILE 直接使用 vcpkg 提供的库。
  4. 支持多架构和三方工具链

    可以安装不同架构版本的库,比如 x86-windowsx64-linuxarm64-windows 等。

  5. 开源社区维护

    vcpkg 维护了几千个常用 C/C++ 库的"端口(ports)",由微软和社区共同更新。


🚀 使用流程(简单示例)

  1. 获取 vcpkg

    bash 复制代码
    git clone https://github.com/microsoft/vcpkg.git
    cd vcpkg
    bootstrap-vcpkg.bat   # Windows
    ./bootstrap-vcpkg.sh  # Linux/macOS
  2. 安装库

    bash 复制代码
    vcpkg install fmt
    vcpkg install spdlog:x64-windows
  3. 在 CMake 中使用

    bash 复制代码
    cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=path/to/vcpkg/scripts/buildsystems/vcpkg.cmake

📌 总结:
vcpkg 就是 C/C++ 的"依赖包管理器",帮你省去找源码、手动编译、配置库路径的麻烦,在 VS / CMake 项目里一键使用第三方库。

要不要我给你画一个 "没有 vcpkg" vs "使用 vcpkg" 的对比流程图 ,让你更直观地理解它的作用?

好问题 👍 我来给你整理一份 spdlog 在 vcpkg 里安装和使用的完整清单,并针对不同场景(命令行程序、CMake、Visual Studio、Qt 项目)告诉你怎么用。


📦 1. 安装 spdlog

vcpkg 中,直接执行:

bash 复制代码
vcpkg install spdlog

如果你需要特定架构:

bash 复制代码
vcpkg install spdlog:x64-windows
vcpkg install spdlog:x86-windows
vcpkg install spdlog:x64-linux

👉 执行完后,spdlog 会被安装到 vcpkg 的包目录(默认是 <vcpkg_root>/installed/...),头文件和库都已经准备好。


💻 2. 在不同场景下的使用方式

场景 A:命令行 / 手写编译

如果你不用 CMake,直接 g++ / cl 编译,可以这样:

bash 复制代码
g++ main.cpp -I <vcpkg_root>/installed/x64-windows/include -L <vcpkg_root>/installed/x64-windows/lib -lspdlog -o myapp

示例 main.cpp

cpp 复制代码
#include <spdlog/spdlog.h>

int main() {
    spdlog::info("Hello, spdlog!");
    spdlog::warn("This is a warning with number {}", 42);
}

场景 B:CMake 项目

  1. 配置 vcpkg toolchain:
bash 复制代码
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=<vcpkg_root>/scripts/buildsystems/vcpkg.cmake
  1. CMakeLists.txt 里写:
cmake 复制代码
cmake_minimum_required(VERSION 3.15)
project(MyApp)

find_package(spdlog CONFIG REQUIRED)

add_executable(myapp main.cpp)
target_link_libraries(myapp PRIVATE spdlog::spdlog)
  1. 直接编译运行:
bash 复制代码
cmake --build build
./build/myapp

场景 C:Visual Studio (MSBuild)

  • 打开 Visual Studio(安装了 vcpkg 集成之后)。

  • vcpkg integrate install 一次 → VS 会自动找到 spdlog

  • 新建/已有 C++ 项目,直接:

    cpp 复制代码
    #include <spdlog/spdlog.h>

    就能用,不需要手动配置 Include / Lib 路径。


场景 D:Qt 项目(qmake / CMake)

如果你用 Qt + vcpkg:

  • Qt + CMake → 按照上面的 CMake 方式就能直接用。

  • Qt + qmake(不推荐,但能用):

    qmake 复制代码
    INCLUDEPATH += <vcpkg_root>/installed/x64-windows/include
    LIBS += -L<vcpkg_root>/installed/x64-windows/lib -lspdlog

📚 3. spdlog 常见用法示例

cpp 复制代码
#include <spdlog/spdlog.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <spdlog/sinks/rotating_file_sink.h>

int main() {
    // 控制台日志
    spdlog::info("Hello, spdlog!");

    // 文件日志
    auto file_logger = spdlog::basic_logger_mt("file_logger", "logs/log.txt");
    file_logger->info("Log message to file");

    // 滚动日志(10MB, 3个文件)
    auto rotating_logger = spdlog::rotating_logger_mt("rotate_logger", "logs/rotating.txt", 1048576 * 10, 3);
    rotating_logger->warn("This log will rotate when size exceeds 10MB");

    // 设置全局日志等级
    spdlog::set_level(spdlog::level::debug);
    spdlog::debug("This is a debug message");
}

✅ 总结

  • 安装vcpkg install spdlog:x64-windows
  • 命令行 :加 -I-L 手动链接
  • CMakefind_package(spdlog CONFIG REQUIRED)target_link_libraries
  • Visual Studio:直接 include,不需要手动配置
  • Qt:推荐用 CMake,qmake 也能用但要手动配置

要不要我帮你整理一份 "spdlog 在不同场景的最小可运行 demo 项目(含代码和配置文件)",你直接复制就能跑?

相关推荐
wangwangblog2 小时前
LLVM 数据结构简介
开发语言·数据结构·c++
John_ToDebug2 小时前
浏览器稳定性提升之路:线上崩溃率优化中的 Return 与 CHECK 之争
c++·chrome
dragoooon342 小时前
[优选算法专题二——NO.16最小覆盖子串]
c++·算法·leetcode·学习方法
汉克老师2 小时前
第十四届蓝桥杯青少组C++选拔赛[2023.1.15]第二部分编程题(4 、移动石子)
c++·算法·蓝桥杯·蓝桥杯c++·c++蓝桥杯
qq_433554543 小时前
C++ Dijkstra堆优化算法
开发语言·c++·算法
许泽宇的技术分享3 小时前
微软图引擎GraphEngine深度解析:分布式内存计算的技术革命
分布式·microsoft
UrSpecial4 小时前
Linux线程同步与互斥
linux·开发语言·c++
楼田莉子4 小时前
C++动态规划算法:斐波那契数列模型
c++·学习·算法·动态规划
Madison-No75 小时前
【C++】日期类运算符重载实战
c++·算法