更多信息: start-cpp-vcpkg
- 可以使用环境变量 VCPKG_ROOT、VCPKG_DOWNLOADS 指定安装、下载目录,也可以每个项目自带一个 vcpkg 子模块
- 下载时网络不是很稳定,经常失败需要反复手动下载,建议仅开源项目和小型项目使用
- 叫得出名字的库基本都支持,如果 vcpkg search 没有那就真没有了
gflags
: Google 命令行标志库。glog
: Google 日志库。nlohmann-json
: 现代的 JSON 解析/生成器,语法糖非常方便。tinyxml
: 轻量的 XML 解析库。fmt
: 格式化库,实现 C++20 std::format,完美取代 iostreams 和 printf。gtest
: Google 测试框架。
- 运行
build-xxx
在线安装第三方库,需要能够访问外网 (github) - 网络异常导致的错误,可以尝试重新运行脚本(下载较多,可能需要反复重试)
- 跨平台项目建议使用 静态库 (Linux默认静态编译,动态链接系统库)
- 跨平台项目建议使用 UTF-8 编码格式,这样仅需设置 Windows 编译环境 (Windows 中文系统默认使用 GBK 编码)
- 跨平台项目建议使用
.gitattributes
确保提交时转换为LF
Added in version | C++ Standard |
---|---|
3.1 | C++ 98, 11, 14 |
3.8 | C++ 17 |
3.12 | C++ 20 |
3.20 | C++ 23 |
3.25 | C++ 26 |
CMake version | MSVC version |
---|---|
Visual Studio 17 2022 | v143 |
Visual Studio 16 2019 | v142 |
Visual Studio 15 2017 | v141 |
Visual Studio 14 2015 | v140 |
Visual Studio 12 2013 | 不保证二进制兼容性 |
C++ Feature | Minimum deployment target |
---|---|
C++ 17 Filesystem | macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0 |
Glibc | Ubuntu | CentOS | Debian |
---|---|---|---|
2.35 | 22.04 (GCC 11.2.0) | ||
2.34 | 9 (GCC 11.2.1) | ||
2.31 | 20.04 (GCC 9.3.0) | 11 (GCC 10.2.1) | |
2.28 | 8 (GCC 8.3.1) | 10 (GCC 8.3.0) | |
2.27 | 18.04 (GCC 7.3.0) | ||
2.24 | 9 (GCC 6.3.0) | ||
2.23 | 16.04 (GCC 5.4.0) | ||
2.19 | 14.04 (GCC 4.8.2) | 8 (GCC 4.9.2) | |
2.17 | 7 (GCC 4.8.5) | ||
2.15 | 12.04 (GCC 4.6.3) | ||
2.13 | 7 (GCC 4.7.2) | ||
2.12 | 6 (GCC 4.4.7) |
- 除了使用
cmake -G
之外,还需要在vcpkg/triplets/xxx.cmake
指定编译器,否则默认使用已安装的最新版本 - 手动修改 triplets 配置,例如设置 MSVC 版本
set(VCPKG_PLATFORM_TOOLSET v140)
- 必须使用
git clone
或submodule
引入 vcpkg,subtree
会报错找不到.git
文件 - 查看历史版本:
git blame -l versions/l-/libuv.json
- 自动添加baseline:
vcpkg x-update-baseline --add-initial-baseline
// libuv 1.41 是最后一个支持 win7 的版本
"overrides": [
{
"name": "libuv",
"version": "1.41.0",
"port-version": 1
}
],
"builtin-baseline": "b051745c68faa6f65c493371d564c4eb8af34dad"
- 安装
vcpkg
工具 (参考本工程.gitmodules
) - 手动引入建议使用
git submodule add -f https://github.com/microsoft/vcpkg.git vcpkg
- 初始化、拉取更新可以使用
git submodule update --init --recursive
- https://github.com/microsoft/vcpkg
- https://github.com/microsoft/vcpkg/blob/master/README_zh_CN.md
.\vcpkg\vcpkg.exe search xxx
.\vcpkg\vcpkg.exe install xxx` or `vcpkg.json
.\vcpkg\packages\xxx\CONTROL