在 Linux 下用 C++ 管理依赖,常见做法按“项目规模 / 团队 / 现代化程度”从简单到复杂大致如下:
适合:小工具、学习项目
apt / yum / pacman 安装依赖sudo apt install libboost-dev libssl-dev
-I / -L / -l✅ 简单
❌ 不可复现、版本难控
适合:中小型项目,想要可复现
include(FetchContent)
FetchContent_Declare(
fmt
GIT_REPOSITORY https://github.com/fmtlib/fmt.git
GIT_TAG 10.1.1
)
FetchContent_MakeAvailable(fmt)
target_link_libraries(app PRIVATE fmt)
✅ 无需系统安装
✅ 版本锁定
❌ 首次编译慢
find_package(Boost REQUIRED)
target_link_libraries(app Boost::boost)
适合:跨平台项目
git clone https://github.com/microsoft/vcpkg
./vcpkg/bootstrap-vcpkg.sh
./vcpkg/vcpkg install fmt boost
CMake 集成:
-DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake
✅ 二进制缓存
✅ 社区库多
❌ 仓库较大
适合:中大型、企业项目
pip install conan
conan install . --output-folder=build --build=missing
conanfile.txt:
[requires]
fmt/10.1.1
[generators]
CMakeDeps
CMakeToolchain
✅ 非常灵活
✅ 支持私有仓库
❌ 学习曲线略高
适合:团队协作、CI/CD
FROM ubuntu:22.04
RUN apt install -y build-essential cmake libboost-dev
COPY . /app
✅ 环境 100% 一致
❌ 重
| 场景 | 推荐 |
|---|---|
| 学习 / 小项目 | apt + CMake |
| 开源项目 | CMake FetchContent |
| 跨平台 | vcpkg |
| 企业 / 复杂 | Conan |
| CI / 团队 | Conan + Docker |
如果你愿意,可以告诉我:
我可以直接给你一套可直接用的依赖管理模板。