文章目录
- [🛠️ 第一步:安装系统级依赖](#🛠️ 第一步:安装系统级依赖)
- [📥 第二步:下载并引导 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 安装在用户主目录下,避免污染系统目录。
-
克隆仓库
bashcd ~ git clone https://github.com/Microsoft/vcpkg.git cd vcpkg -
引导启动(Bootstrap)
运行脚本会自动下载并编译 vcpkg 的可执行文件:
bash./bootstrap-vcpkg.sh
⚙️ 第三步:配置环境变量(永久生效)
为了让终端和 VSCode 都能直接找到 vcpkg,我们需要修改配置文件。
-
打开你的 shell 配置文件(通常是
~/.bashrc或~/.zshrc):bashnano ~/.bashrc -
在文件末尾添加以下内容:
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 -
保存退出(如果是 nano 编辑器,按
Ctrl+O回车保存,Ctrl+X退出),然后让配置立即生效:bashsource ~/.bashrc
📦 第四步:安装 OpenCV
现在你可以像使用普通命令一样使用 vcpkg 了。
-
安装 OpenCV
bashvcpkg install opencv注意:在 Linux 下,vcpkg 默认会下载源码并在本地编译,第一次安装 OpenCV 可能需要几分钟到十几分钟,取决于你的电脑性能。
-
验证安装
bashvcpkg list你应该能看到
opencv:x64-linux出现在列表中。
💻 第五步:在 VSCode 中使用
配置好环境变量后,VSCode 的开发体验将极其简单,几乎不需要额外配置。
-
创建项目
新建一个文件夹,里面放
main.cpp和CMakeLists.txt。 -
CMakeLists.txt 配置
由于我们在环境变量里设置了
CMAKE_TOOLCHAIN_FILE,这里甚至不需要指定 vcpkg 的路径,CMake 会自动接管:cmakecmake_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}) -
编译运行
在 VSCode 中点击底部的"生成"或直接在终端运行:
bashmkdir 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 时报错说缺少
gtk或png等库,请回到第一步 ,安装对应的 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"?
-
"开箱即用"的哲学 :
Linux 发行版(如 Ubuntu, Fedora)本身就是为开发者设计的。核心的编译工具(GCC, Make, CMake)通常被视为系统的基础组件。
- 在 Windows 上,你需要去微软官网下载几 GB 的安装包来安装编译器。
- 在 Linux 上,你只需要一行命令(例如
sudo apt install build-essential),系统就会自动从软件源下载并配置好编译器,而且这些工具直接就在系统的环境变量里,不需要像 Windows 那样手动配置 PATH。
-
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 了。