运行环境:Windows 10 22H2 x64 + Visual Studio 2022

vcpkg

vcpkg 是 Microsoft 的跨平台开源软件包管理器,极大地简化了 Windows、Linux 和 macOS 上第三方库的配置与安装。官网

配置教程

Step 1: 从 GitHub 克隆 vcpkg

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg

注意vcpkg目录的位置,确保文件路径长度合适以及可以存储较大数据。

Step 2: 运行 bootstrap

./bootstrap-vcpkg.bat

Step 3: 将包自动集成到 vs 的工程中

./vcpkg integrate install

之后缺哪个运行库只需在该文件夹打开 powershell 运行 vcpkg 安装指令即可。

常用命令

搜索包

./vcpkg search [packages]

安装包(输入上面搜出的包名)

./vcpkg install <pkg>

查看已安装包列表

./vcpkg list

删除包

./vcpkg remove <pkg>

帮助

./vcpkg help

卸载 vcpkg(并在之后删除此文件夹)

./vcpkg integrate remove

举例

.\vcpkg install eigen3:x64-windows
.\vcpkg install opencv4[contrib]:x64-windows
.\vcpkg install qt5-base:x64-windows

清理空间

在文档docs/about/faq.md中提到:

## How can I remove temporary files?

You can save some disk space by completely removing the `packages\`, `buildtrees\`, and `downloads\` folders.

​ 参考 @zhc 笔记,删除buildtrees\可能导致静态库无法调试。

网络问题

使用代理服务器进行网络加速时,PowerShell 终端默认不走代理端口。为此可以在 PowerShell 中运行:

$env:HTTP_PROXY="localhost:7890"
$env:HTTPS_PROXY="localhost:7890"

上述代理服务器端口因设备而异,仅改变本次端口设置。

如果需要设置全局代理,可在环境变量中设置

http_proxy         http://127.0.0.1:7890/
https_proxy     http://127.0.0.1:7890/

CMake 时遇到网络问题:在 CMakeLists.txt 的前面添加如下代码

set(ENV{http_proxy} "http://127.0.0.1:7890")
set(ENV{https_proxy} "http://127.0.0.1:7890")

项目配置

CMake

方法一:使用 CMake-GUI

选择源代码位置、build 目录,只需 Configure、Generate、Open Project 三步。

若出错则需要对应报错信息找错。大部分错误是找不到依赖库。

方法二:使用 VS 内置

新建一个空的 VS 项目,文件-打开-CMake,选中 CMakeLists.txt

打开CMake设置-高级-CMake生成器-改为VS2022 Win64

注意点

  1. 请勿新建一个项目,然后将代码文件(.cpp .h等)加入项目,折磨且成功率低
  2. 配置前确认项目可以在win环境生成,如某些依赖库只支持 Linux 系统,需要使用 WSL 生成

字体

YaHei Consolas Hybrid 1.12

Fira Code

命令行参数

项目-属性-配置属性-调试-命令行参数

包含目录出错

无法打开源文件:fstream

包含目录只要有一个错的,后面的包含目录都会出错。

删去不正确的包含目录即可。

Eigen 库使用

svd 分解

Eigen::JacobiSVD<Eigen::Matrix3d> svd(J, Eigen::ComputeFullU| Eigen::ComputeFullV);        Eigen::Matrix3d U = svd.matrixU();
Eigen::Matrix3d S = svd.singularValues();
Eigen::Matrix3d V = svd.matrixV();  //J = U * S * V.T