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

发布于:2025-09-13 ⋅ 阅读:(21) ⋅ 点赞:(0)

vcpkg微软开源的 C/C++ 包管理工具,类似于 Python 的 pip、Node.js 的 npm、Rust 的 cargo
它的主要作用是:帮助你快速下载、编译、安装和管理 C/C++ 第三方库,并自动配置到你的项目(比如 Visual Studio、CMake、MSBuild)。


🌟 vcpkg 的特点

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

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

    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

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

    vcpkg install fmt
    vcpkg install spdlog:x64-windows
    
  3. 在 CMake 中使用

    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 中,直接执行:

vcpkg install spdlog

如果你需要特定架构:

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 编译,可以这样:

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

示例 main.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:
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=<vcpkg_root>/scripts/buildsystems/vcpkg.cmake
  1. CMakeLists.txt 里写:
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. 直接编译运行:
cmake --build build
./build/myapp

场景 C:Visual Studio (MSBuild)

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

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

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

    #include <spdlog/spdlog.h>
    

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


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

如果你用 Qt + vcpkg:

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

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

    INCLUDEPATH += <vcpkg_root>/installed/x64-windows/include
    LIBS += -L<vcpkg_root>/installed/x64-windows/lib -lspdlog
    

📚 3. spdlog 常见用法示例

#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 项目(含代码和配置文件)”,你直接复制就能跑?


网站公告

今日签到

点亮在社区的每一天
去签到