运行环境: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
注意点
- 请勿新建一个项目,然后将代码文件(.cpp .h等)加入项目,折磨且成功率低
- 配置前确认项目可以在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