温馨提示×

ubuntu c++怎么管理依赖

小樊
33
2026-09-02 08:53:58
栏目: 编程语言

在 Ubuntu 上用 C++ 管理依赖,常见方式有以下几种,从“简单直接”到“现代化工程化”逐步进阶:


一、系统包管理器(最基础)

Ubuntu 自带 apt,适合系统级库。

安装依赖

sudo apt update
sudo apt install libboost-dev
sudo apt install libopencv-dev
sudo apt install libcurl4-openssl-dev

在编译时链接

g++ main.cpp -o app -lopencv_core -lcurl

查找头文件和库位置

dpkg -L libboost-dev
pkg-config --cflags --libs opencv4

✅ 优点:简单、稳定
❌ 缺点:版本受系统限制,不便于多项目隔离


二、pkg-config(配合 apt 使用)

很多库提供 .pc 文件。

g++ main.cpp $(pkg-config --cflags --libs gtk+-3.0)

CMake 中也可用:

find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK REQUIRED gtk+-3.0)

三、CMake(工程级依赖管理)

最主流方式。

使用系统库

find_package(OpenCV REQUIRED)
target_link_libraries(app PRIVATE OpenCV::OpenCV)

指定 C++ 标准

set(CMAKE_CXX_STANDARD 17)

✅ 优点:跨平台、可维护
✅ 工业界标准


四、vcpkg(跨平台 C++ 包管理器,推荐)

微软维护,支持 Linux / Windows / macOS。

安装 vcpkg

git clone https://github.com/microsoft/vcpkg
./vcpkg/bootstrap-vcpkg.sh

安装依赖

./vcpkg/vcpkg install fmt spdlog

CMake 使用

cmake -B build -S . \
  -DCMAKE_TOOLCHAIN_FILE=~/vcpkg/scripts/buildsystems/vcpkg.cmake

✅ 优点:版本可控、跨平台
✅ 非常适合现代 C++


五、Conan(C++ 专用包管理器)

更接近“Java Maven / Python pip”。

pip install conan
conan install . --output-folder=build --build=missing

conanfile.txt 示例:

[requires]
fmt/10.1.1
spdlog/1.12.0

[generators]
CMakeDeps
CMakeToolchain

✅ 优点:非常灵活
❌ 缺点:学习曲线稍高


六、容器化(终极方案)

避免“在我机器上能跑”。

FROM ubuntu:22.04
RUN apt update && apt install -y g++ cmake libboost-dev

推荐组合(实战建议)

场景 推荐
学习 / 小工具 apt + CMake
正式项目 CMake + vcpkg
多平台项目 Conan / vcpkg
团队开发 Docker + CMake

如果你愿意,可以告诉我:

  • 用的 Ubuntu 版本
  • 是否用 CMake
  • 项目规模(学习 / 公司项目)

我可以给你一套具体可复制的配置示例

0