{"id":49019279,"url":"https://github.com/zxffffffff/start-cpp-vcpkg-template","last_synced_at":"2026-04-19T03:11:29.842Z","repository":{"id":260237910,"uuid":"880714441","full_name":"zxffffffff/start-cpp-vcpkg-template","owner":"zxffffffff","description":"一个 C++ 跨平台脚手架项目，使用 vcpkg + cmake 搭建","archived":false,"fork":false,"pushed_at":"2025-01-12T06:02:35.000Z","size":94,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-12T06:25:51.675Z","etag":null,"topics":["cmake","cpp","cross-platform","starter","template","vcpkg"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zxffffffff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-30T08:12:43.000Z","updated_at":"2025-01-12T06:02:39.000Z","dependencies_parsed_at":"2024-12-26T15:25:45.591Z","dependency_job_id":"738fa912-1572-434a-85a5-0e3269ab5730","html_url":"https://github.com/zxffffffff/start-cpp-vcpkg-template","commit_stats":null,"previous_names":["zxffffffff/start-cpp-vcpkg-template"],"tags_count":2,"template":true,"template_full_name":null,"purl":"pkg:github/zxffffffff/start-cpp-vcpkg-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zxffffffff%2Fstart-cpp-vcpkg-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zxffffffff%2Fstart-cpp-vcpkg-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zxffffffff%2Fstart-cpp-vcpkg-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zxffffffff%2Fstart-cpp-vcpkg-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zxffffffff","download_url":"https://codeload.github.com/zxffffffff/start-cpp-vcpkg-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zxffffffff%2Fstart-cpp-vcpkg-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31992902,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cmake","cpp","cross-platform","starter","template","vcpkg"],"created_at":"2026-04-19T03:11:28.863Z","updated_at":"2026-04-19T03:11:29.812Z","avatar_url":"https://github.com/zxffffffff.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# start-cpp-vcpkg-template\n\n![workflow](https://github.com/zxffffffff/start-cpp-vcpkg-template/actions/workflows/build-windows.yml/badge.svg?event=push)\n![workflow](https://github.com/zxffffffff/start-cpp-vcpkg-template/actions/workflows/build-macos.yml/badge.svg?event=push)\n![workflow](https://github.com/zxffffffff/start-cpp-vcpkg-template/actions/workflows/build-ubuntu.yml/badge.svg?event=push)\n\n更多信息: [start-cpp-vcpkg](https://github.com/zxffffffff/start-cpp-vcpkg)\n\n## 温馨提示\n\n- 可以使用环境变量 VCPKG_ROOT、VCPKG_DOWNLOADS 指定安装、下载目录，也可以每个项目自带一个 vcpkg 子模块\n- 下载时网络不是很稳定，经常失败需要反复手动下载，建议仅开源项目和小型项目使用\n- 叫得出名字的库基本都支持，如果 vcpkg search 没有那就真没有了\n\n## 一个 C++ 跨平台脚手架项目，使用 vcpkg + cmake 搭建\n\n- `gflags`: Google 命令行标志库。\n- `glog`: Google 日志库。\n- `nlohmann-json`: 现代的 JSON 解析/生成器，语法糖非常方便。\n- `tinyxml`: 轻量的 XML 解析库。\n- `fmt`: 格式化库，实现 C++20 std::format，完美取代 iostreams 和 printf。\n- `gtest`: Google 测试框架。\n\n## 快速开始\n\n- 运行 `build-xxx` 在线安装第三方库，需要能够访问外网 (github)\n- 网络异常导致的错误，可以尝试重新运行脚本(下载较多，可能需要反复重试)\n- 跨平台项目建议使用 静态库 (Linux默认静态编译，动态链接系统库)\n- 跨平台项目建议使用 UTF-8 编码格式，这样仅需设置 Windows 编译环境 (Windows 中文系统默认使用 GBK 编码)\n- 跨平台项目建议使用 `.gitattributes` 确保提交时转换为 `LF`\n\n### CMake CXX_STANDARD 版本参考\n\n| Added in version  | C++ Standard    |\n| ----------------- | --------------- |\n| 3.1               | C++ 98, 11, 14  |\n| 3.8               | C++ 17          |\n| 3.12              | C++ 20          |\n| 3.20              | C++ 23          |\n| 3.25              | C++ 26          |\n\n### Windows MSVC 参考\n\n| CMake version         | MSVC version    |\n| --------------------- | --------------- |\n| Visual Studio 17 2022 | v143            |\n| Visual Studio 16 2019 | v142            |\n| Visual Studio 15 2017 | v141            |\n| Visual Studio 14 2015 | v140            |\n| Visual Studio 12 2013 | 不保证二进制兼容性 |\n\n### Apple C++ 版本参考\n\n| C++ Feature        | Minimum deployment target                     |\n| ------------------ | --------------------------------------------- |\n| C++ 17 Filesystem  | macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0 |\n\n### Linux Glibc 版本参考\n\n| Glibc | Ubuntu             | CentOS         | Debian          |\n| ----- | ------------------ | -------------- | --------------- |\n| 2.35  | 22.04 (GCC 11.2.0) |                |                 |\n| 2.34  |                    | 9 (GCC 11.2.1) |                 |\n| 2.31  | 20.04 (GCC 9.3.0)  |                | 11 (GCC 10.2.1) |\n| 2.28  |                    | 8 (GCC 8.3.1)  | 10 (GCC 8.3.0)  |\n| 2.27  | 18.04 (GCC 7.3.0)  |                |                 |\n| 2.24  |                    |                | 9 (GCC 6.3.0)   |\n| 2.23  | 16.04 (GCC 5.4.0)  |                |                 |\n| 2.19  | 14.04 (GCC 4.8.2)  |                | 8 (GCC 4.9.2)   |\n| 2.17  |                    | 7 (GCC 4.8.5)  |                 |\n| 2.15  | 12.04 (GCC 4.6.3)  |                |                 |\n| 2.13  |                    |                | 7 (GCC 4.7.2)   |\n| 2.12  |                    | 6 (GCC 4.4.7)  |                 |\n\n## 注意事项\n\n### vcpkg 指定编译器(降级)\n\n- 除了使用 `cmake -G` 之外，还需要在 `vcpkg/triplets/xxx.cmake` 指定编译器，否则默认使用已安装的最新版本\n- 手动修改 triplets 配置，例如设置 MSVC 版本 `set(VCPKG_PLATFORM_TOOLSET v140)`\n\n### vcpkg 指定版本号(降级)\n\n- 必须使用 `git clone` 或 `submodule` 引入 vcpkg，`subtree` 会报错找不到 `.git` 文件\n- 查看历史版本：`git blame -l versions/l-/libuv.json`\n- 自动添加baseline：`vcpkg x-update-baseline --add-initial-baseline`\n\n```js\n// libuv 1.41 是最后一个支持 win7 的版本\n\"overrides\": [\n  {\n    \"name\": \"libuv\",\n    \"version\": \"1.41.0\",\n    \"port-version\": 1\n  }\n],\n\"builtin-baseline\": \"b051745c68faa6f65c493371d564c4eb8af34dad\"\n```\n\n## Vcpkg\n\n- 安装 `vcpkg` 参考本工程 `CMakeLists.txt`\n- 手动安装建议使用 `git clone https://github.com/microsoft/vcpkg.git`\n- 推荐使用环境变量 VCPKG_ROOT、VCPKG_DOWNLOADS 避免重复下载编译\n\n### 参考\n\n- \u003chttps://github.com/microsoft/vcpkg\u003e\n- \u003chttps://github.com/microsoft/vcpkg/blob/master/README_zh_CN.md\u003e\n\n### 查询 \u0026 添加 \u0026 查看\n\n```Bash\n.\\vcpkg\\vcpkg.exe search xxx\n.\\vcpkg\\vcpkg.exe install xxx` or `vcpkg.json\n.\\vcpkg\\packages\\xxx\\CONTROL\n```\n\n## License\n\n选择合适的开源协议，例如 `MIT License`\n\n![image](https://github.com/zxffffffff/start-cpp-vcpkg-template/blob/main/docs/choose-a-license.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzxffffffff%2Fstart-cpp-vcpkg-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzxffffffff%2Fstart-cpp-vcpkg-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzxffffffff%2Fstart-cpp-vcpkg-template/lists"}