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