Linux 下使用vcpkg开发环境

文章目录

  • [🛠️ 第一步:安装系统级依赖](#🛠️ 第一步:安装系统级依赖)
  • [📥 第二步:下载并引导 vcpkg](#📥 第二步:下载并引导 vcpkg)
  • [⚙️ 第三步:配置环境变量(永久生效)](#⚙️ 第三步:配置环境变量(永久生效))
  • [📦 第四步:安装 OpenCV](#📦 第四步:安装 OpenCV)
  • [💻 第五步:在 VSCode 中使用](#💻 第五步:在 VSCode 中使用)
  • [💡 Linux 下的特别提示](#💡 Linux 下的特别提示)
  • [Windows 下需要安装Visual Studio Build Tools,Linux 下就不需要了是吧](#Windows 下需要安装Visual Studio Build Tools,Linux 下就不需要了是吧)
    • [🆚 Windows vs Linux:编译工具链对比](#🆚 Windows vs Linux:编译工具链对比)
    • [💡 为什么 Linux 不需要"Build Tools"?](#💡 为什么 Linux 不需要“Build Tools”?)
    • [⚠️ 一个小小的补充](#⚠️ 一个小小的补充)

在 Linux 下使用 vcpkg 其实比 Windows 下更顺滑,因为 Linux 本身就是 C++ 开发的"原生"主场。不过,Linux 下最大的"坑"在于权限管理 (避免动不动就 sudo)和依赖库的安装。

结合你之前的 VSCode + CMake 需求,我为你整理了一套**"用户级"配置方案**。这套方案不需要 root 权限,不会影响系统环境,非常适合开发使用。

🛠️ 第一步:安装系统级依赖

vcpkg 只是一个下载器,它下载下来的源码(如 OpenCV)还需要在你的 Linux 上编译。因此,你需要先装好编译工具链。

Ubuntu/Debian 用户:

bash 复制代码
sudo apt update
sudo apt install -y build-essential cmake ninja-build git zip unzip tar
# 如果是编译 GUI 库(如 OpenCV),还需要安装一些基础图形库,否则编译会报错
sudo apt install -y libgtk-3-dev pkg-config

CentOS/RHEL/Fedora 用户:

bash 复制代码
sudo yum groupinstall "Development Tools"
sudo yum install -y cmake ninja-build git

📥 第二步:下载并引导 vcpkg

我们将 vcpkg 安装在用户主目录下,避免污染系统目录。

  1. 克隆仓库

    bash 复制代码
    cd ~
    git clone https://github.com/Microsoft/vcpkg.git
    cd vcpkg
  2. 引导启动(Bootstrap)

    运行脚本会自动下载并编译 vcpkg 的可执行文件:

    bash 复制代码
    ./bootstrap-vcpkg.sh

⚙️ 第三步:配置环境变量(永久生效)

为了让终端和 VSCode 都能直接找到 vcpkg,我们需要修改配置文件。

  1. 打开你的 shell 配置文件(通常是 ~/.bashrc~/.zshrc):

    bash 复制代码
    nano ~/.bashrc
  2. 在文件末尾添加以下内容:

    bash 复制代码
    # vcpkg 根目录
    export VCPKG_ROOT=$HOME/vcpkg
    export PATH=$VCPKG_ROOT:$PATH
    # 设置默认架构为 Linux x64
    export VCPKG_DEFAULT_TRIPLET=x64-linux
    # 关键:让 CMake 自动发现 vcpkg 工具链
    export CMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
  3. 保存退出(如果是 nano 编辑器,按 Ctrl+O 回车保存,Ctrl+X 退出),然后让配置立即生效:

    bash 复制代码
    source ~/.bashrc

📦 第四步:安装 OpenCV

现在你可以像使用普通命令一样使用 vcpkg 了。

  1. 安装 OpenCV

    bash 复制代码
    vcpkg install opencv

    注意:在 Linux 下,vcpkg 默认会下载源码并在本地编译,第一次安装 OpenCV 可能需要几分钟到十几分钟,取决于你的电脑性能。

  2. 验证安装

    bash 复制代码
    vcpkg list

    你应该能看到 opencv:x64-linux 出现在列表中。

💻 第五步:在 VSCode 中使用

配置好环境变量后,VSCode 的开发体验将极其简单,几乎不需要额外配置。

  1. 创建项目

    新建一个文件夹,里面放 main.cppCMakeLists.txt

  2. CMakeLists.txt 配置

    由于我们在环境变量里设置了 CMAKE_TOOLCHAIN_FILE,这里甚至不需要指定 vcpkg 的路径,CMake 会自动接管:

    cmake 复制代码
    cmake_minimum_required(VERSION 3.10)
    project(LinuxOpenCVTest)
    
    set(CMAKE_CXX_STANDARD 17)
    
    # 自动查找 vcpkg 安装的 OpenCV
    find_package(OpenCV REQUIRED)
    
    add_executable(main main.cpp)
    
    # 链接库
    target_link_libraries(main PRIVATE ${OpenCV_LIBS})
  3. 编译运行

    在 VSCode 中点击底部的"生成"或直接在终端运行:

    bash 复制代码
    mkdir build
    cd build
    cmake .. 
    cmake --build .
    ./main

💡 Linux 下的特别提示

  • 关于权限 :千万不要用 sudo ./vcpkg install ...。vcpkg 设计之初就是为了在用户空间运行。如果你不小心用了 sudo,导致文件归属变成了 root,你需要用 sudo chown -R $USER:$USER ~/vcpkg 把权限改回来。
  • 关于 Triplet(三元组)
    • x64-linux:动态链接(默认,推荐)。生成的程序依赖系统的 .so 文件。
    • x64-linux-static:静态链接。生成的程序体积大,但拷贝到别的机器上容易运行(前提是 glibc 版本兼容)。
  • 缺少依赖报错 :如果在编译 OpenCV 时报错说缺少 gtkpng 等库,请回到第一步 ,安装对应的 Linux 系统开发包(如 libgtk-3-dev),然后重新运行 vcpkg install opencv

这样配置下来,你的 Linux 开发环境就非常干净、现代且易于维护了!

Windows 下需要安装Visual Studio Build Tools,Linux 下就不需要了是吧

没错,你的理解很准确!

在 Linux 下,你确实不需要安装类似"Visual Studio Build Tools"这样庞大的独立工具包。

这是因为 Linux 的 C++ 开发逻辑和 Windows 完全不同。为了让你更清楚这两者的区别,我为你做了一个对比:

🆚 Windows vs Linux:编译工具链对比

特性 Windows (MSVC 路线) Linux (GCC 路线)
核心编译器 MSVC (cl.exe) GCC (g++)
获取方式 必须下载巨大的 Visual Studio Build Tools 或 Visual Studio IDE。 通常系统自带 ,或通过包管理器一键安装(如 apt install build-essential)。
标准库 Windows SDK (包含在 Build Tools 中)。 glibc / libstdc++ (包含在 Linux 发行版中)。
包管理器 vcpkg (微软官方,体验极佳)。 apt / dnf / yum (系统级) + vcpkg (项目级)。
配置难度 较高(需要配置环境变量、路径)。 较低(编译器通常在 /usr/bin 下,默认就在 PATH 中)。

💡 为什么 Linux 不需要"Build Tools"?

  1. "开箱即用"的哲学

    Linux 发行版(如 Ubuntu, Fedora)本身就是为开发者设计的。核心的编译工具(GCC, Make, CMake)通常被视为系统的基础组件。

    • 在 Windows 上,你需要去微软官网下载几 GB 的安装包来安装编译器。
    • 在 Linux 上,你只需要一行命令(例如 sudo apt install build-essential),系统就会自动从软件源下载并配置好编译器,而且这些工具直接就在系统的环境变量里,不需要像 Windows 那样手动配置 PATH。
  2. vcpkg 的角色变化

    • 在 Windows 上:vcpkg 不仅要下载源码,往往还要负责帮你调用 Visual Studio 的编译器。
    • 在 Linux 上:vcpkg 只需要下载源码,然后直接调用系统里已经存在的 GCC 编译器即可。它不需要自己带一套编译器。

⚠️ 一个小小的补充

虽然 Linux 不需要 Visual Studio Build Tools,但并不代表 Linux 什么都不用装

如果你使用的是一个极简的 Linux 系统(比如 Docker 容器或最小化安装的服务器),你可能需要手动安装基础构建工具包

  • Ubuntu/Debian : 安装 build-essential (包含了 gcc, g++, make)。
  • CentOS/RHEL : 安装 Development Tools 组。

总结:

你在 Windows 上安装 Visual Studio Build Tools 是为了获得 MSVC 编译器

而在 Linux 上,GCC 编译器通常已经是系统的一部分(或者很容易获得),所以你完全省去了"安装庞大 IDE 或工具包"这个步骤,直接就能开始写代码、用 vcpkg 了。