vcpkg
是 微软开源的 C/C++ 包管理工具,类似于 Python 的 pip
、Node.js 的 npm
、Rust 的 cargo
。
它的主要作用是:帮助你快速下载、编译、安装和管理 C/C++ 第三方库,并自动配置到你的项目(比如 Visual Studio、CMake、MSBuild)。
🌟 vcpkg 的特点
-
跨平台
支持 Windows、Linux、macOS,可以在不同平台上用同样的命令获取依赖。 -
库的集中管理
你只需要运行一条命令,就能安装常用的库(如boost
、openssl
、zlib
、fmt
、spdlog
等),不用自己找源码编译。vcpkg install boost vcpkg install openssl:x64-windows
-
自动集成 IDE
- 在 Visual Studio / Visual Studio Code 中,可以自动找到通过
vcpkg
安装的库。 - 在 CMake 项目里,可以用
-DCMAKE_TOOLCHAIN_FILE
直接使用 vcpkg 提供的库。
- 在 Visual Studio / Visual Studio Code 中,可以自动找到通过
-
支持多架构和三方工具链
可以安装不同架构版本的库,比如x86-windows
、x64-linux
、arm64-windows
等。 -
开源社区维护
vcpkg 维护了几千个常用 C/C++ 库的“端口(ports)”,由微软和社区共同更新。
🚀 使用流程(简单示例)
-
获取 vcpkg
git clone https://github.com/microsoft/vcpkg.git cd vcpkg bootstrap-vcpkg.bat # Windows ./bootstrap-vcpkg.sh # Linux/macOS
-
安装库
vcpkg install fmt vcpkg install spdlog:x64-windows
-
在 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 项目
- 配置 vcpkg toolchain:
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=<vcpkg_root>/scripts/buildsystems/vcpkg.cmake
- 在
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)
- 直接编译运行:
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
手动链接 - CMake:
find_package(spdlog CONFIG REQUIRED)
→target_link_libraries
- Visual Studio:直接 include,不需要手动配置
- Qt:推荐用 CMake,qmake 也能用但要手动配置
要不要我帮你整理一份 “spdlog 在不同场景的最小可运行 demo 项目(含代码和配置文件)”,你直接复制就能跑?