最近更新于 2022-05-16 23:54

注:msvc 比较庞大,vcpkg 采用源码编译安装也会占用很大空间。如果要选择相对轻量的环境,前往“搭建 vscode + msys2 开发环境”:https://blog.iyatt.com/?p=3541

① vscode 是一款十分强大的代码编辑器,也是我一直在用的编辑器,不管 Windows 还是 Linux 下都能安装使用。可以用过安装插件,配合各种工具建立起一个便捷好用的 “IDE”。

下载地址:https://code.visualstudio.com/

② CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。 ——来自百度百科

下载地址:https://cmake.org/download/

③ msvc 是微软提供的 C/C++ 编译器,可能很多人都不知道它,但是其实又用过(如果使用 Visual Studio 编译过 C/C++ 代码)。坦白来说 vs 单纯也只是一个编辑器,只是相比于 vscode,它就是“重型武器”,十分庞大(也是我不使用的一个原因)。如果要使用 vs 编译 C/C++ 代码,那就需要安装编译器,也就需要添加 “使用 C++ 的桌面开发” ,它就包含了 msvc 也就是微软的 C/C++ 编译器。

除了通过 vs 安装,微软也提供单独安装这套编译工具的渠道。

目前最新版为 2022,但是并不建议,可能有些开发库并不支持,建议用相对最新版的上一个版本。

MSBuild 2022:https://aka.ms/vs/17/release/vs_BuildTools.exe

MSBuild 2019:https://aka.ms/vs/16/release/vs_BuildTools.exe

MSBuild 2016:https://aka.ms/vs/15/release/vs_BuildTools.exe

翻到底部,展开“适用于 Visual Studio xxxx 的工具”,有一个 “Visual Studio xxxx 生成工具”,下载运行后勾选 “使用 C++ 的桌面开发” 下载安装就行。

④ vcpkg 类似一个包管理工具,如 Python 的 pip、Debian(Ubuntu、Kali Linux) 的 apt、CentOS 的 yum。而 vcpkg 可以让 Windows 也能一个命令安装东西,当然它主要面向开发,像 OpenCV、FFmpeg、Dlib、TensorFlow 、Qt、Gtkmm等等开发工具库,搞开发应该就知到配置环境有多么折磨,通过 vcpkg 就简单很多了。vcpkg 也不限于 Windows 使用,对于 Linux 也是支持的,不过对于我而言,主要也就是可以方便 Windows 配置环境,vcpkg 安装是基于源码编译的,这也是它能支持跨平台的原因,同时也避免了二进制文件更高概率的不兼容问题。

怎么安装 vcpkg ,怎么使用在文档中都有,见下面链接。

安装 vcpkg 以及使用 vcpkg 安装东西都是从 github 获取源码,如果没有梯子速度会惨不忍睹,此处先提醒。

在安装 vcpkg 之前还需要安装 git,下载地址:https://git-scm.com/

vcpkg 中文文档:https://github.com/microsoft/vcpkg/blob/master/README_zh_CN.md

注:

vcpkg 有点特殊,安装它也并不是普遍意义上的安装,只是 git 把 vcpkg 的源码拉下来,然后执行脚本会把 vcpkg 编译出来(vcpkg 不是图形程序,类似命令的方式执行)。这样使用还不是很方便,建议添加环境变量。下面是我的安装处理方式:

打开文件资源管理器,我选择 D:\Program Files 作为安装路径

按住 shift 在空白处点击右键,如果是 win10 应该可以看到打开 PowerShell,我这里 win 11 还要展开显示更多选项

然后按照文档所说获取源码

git clone https://github.com/microsoft/vcpkg --depth=1

执行脚本编译生成 vcpkg

.\vcpkg\bootstrap-vcpkg.bat

然后可以看到 vcpkg 目录下有了一个 vcpkg.exe 的文件,这个就是本体了,然后现在需要将它所在的路径添加到环境变量中去,复制路径

打开控制面板-系统和安全-系统-高级系统设置-环境变量-双击下面的Path

点击新建,然后粘粘

后面依次点击确定就行。

测试一下,打开一个 PowerShell 界面,执行 vcpkg 查找包

注意使用 vcpkg install 安装,可能需要以管理员权限运行 PowerShell(与 vcpkg 所在目录的权限有关)

融合搭配

上面完成了各自的安装,那么现在就要合在一起使用,这一步很关键。vcpkg 安装依赖库、vscode 编写代码、cmake 组织项目编译细则、msvc 执行编译,合在一起就是一个 IDE。

打开 vscode,按 Ctrl+Shift+P ,搜索 settings.json,点开设置文件

在尾部,同时又在最外层花括号内添加,并且注意在前一个设置项结束位置添加一个英文逗号。

    "cmake.configureSettings": {
        "CMAKE_TOOLCHAIN_FILE": "【vcpkg 所在路径】\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake"
    }

这个设置的主要目的就是让 cmake 能够找到 vcpkg 安装的库,vcpkg 安装的东西并不在系统默认库搜索范围内,而是在 vcpkg 目录下,因此直接使用时,vscode 的 cmake 插件就找不到库。

对于插件,建议安装的有 C/C++、CMake 和 CMake Tools。

下面就给一个预览摄像头的案例:

首先安装 opencv(64 位版),会花一些时间编译安装(我电脑花了二十多分钟)

# 以管理员权限打开 PowerShell
vcpkg install opencv4:x64-windows

然后打开 vscode 创建一个文件夹,分别创建两个文件 main.cpp 和 CMakeLists.txt

main.cpp

#include "opencv2/opencv.hpp"


int main()
{
    cv::VideoCapture cap(0);
    cv::Mat frame;
    while (true)
    {
        cap.read(frame);
        cv::imshow("cap", frame);
        if (cv::waitKey(1) == 27)
        {
            break;
        }
    }
    cap.release();
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.18)
project(test)

aux_source_directory(. src)
add_executable(demo ${src})

find_package(OpenCV REQUIRED)
target_link_libraries(demo ${OpenCV_LIBS})

然后再 CMakeLists.txt 上右键,点击配置所有项目

项目首次配置会让选择编译器,就选 amd64 的。

——————————————————————————————————

amd64:在 64 位设备上编译 64 位的程序。

amd64_x86: 在 64 位的设备上编译 32 位程序。

x86: 在 32位(64 位设备也兼容运行)的设备上编译 32 位程序。

x86_amd64: 在 32 位(64 位设备也兼容运行)的设备上编译 64 位程序。

——————————————————————————————————

然后还是在 CMakeLists.txt 上右键,点击生成所有项目

编译成功然后点击下面的蜘蛛调试运行

作者 IYATT-yx