简介:本资源为 CMake 3.26.6 官方 Windows 64 位命令行工具完整安装包,面向 C/C++ 开发者、跨平台项目构建工程师及初学者,用于替代 Visual Studio 内置构建系统或配合 Ninja/MSVC 等后端生成构建脚本,解决多平台项目配置、依赖管理与自动化编译难题。压缩包共含 2000 个文件,主体为 1194 个文本格式的配置说明、环境变量设置指南与命令参数详解,辅以 806 个 HTML 格式的官方文档页面(涵盖 cmake.1、ctest.1、cmake-presets.7、cmake-file-api.7 等核心模块),全面覆盖构建流程、变量定义、生成器表达式、预设配置等关键能力,包体大小为 39.99MB。已有 297 人下载学习,资源结构高度还原官方文档组织逻辑,可直接解压即用,无需联网访问在线手册,特别适合离线开发、CI 环境部署及系统化学习 CMake 构建体系。
1. CMake 3.26.6 Windows x86_64 安装包:不是“下载即用”的绿色解压包,而是开箱即用的完整构建环境枢纽
你刚在官网或镜像站点下载了cmake-3.26.6-windows-x86_64.zip,双击解压后看到一堆.html文件(cmake.1.html、ctest.1.html、cmake-buildsystem.7.html……),第一反应可能是:“这哪是安装包?连个cmake.exe都没看见?”——别急,这不是打包失误,而是 CMake 官方自 3.20 起推行的「免安装分发模式」:这个 ZIP 包本质是一个预编译、静态链接、开箱即用的 Windows 原生二进制发行版,cmake.exe就藏在bin/目录下,而所有 HTML 文档是离线帮助系统(genindex.html是总索引页),无需联网、不依赖 Visual Studio 运行时、不写注册表、不改 PATH——它就是你本地构建流水线里那个最稳的“指挥官”。适合正在为嵌入式项目交叉编译、为 Qt 5/6 项目配置多工具链、或在 CI/CD 中需要确定性构建行为的 Windows 工程师。如果你还在手动编译 CMake 源码、或从 Chocolatey 安装后被版本冲突折磨,这个包就是你的后悔药。
2. 解压即用:定位二进制、验证签名、注入 PATH 的三步落地法
2.1 解压后目录结构与关键文件定位
下载完成的cmake-3.26.6-windows-x86_64.zip解压后,典型结构如下(路径以C:\tools\cmake-3.26.6为例):
cmake-3.26.6/ ├── bin/ │ ├── cmake.exe ← 主程序(x86_64 架构,静态链接 MSVCRT) │ ├── cpack.exe │ ├── ctest.exe │ └── cmake-gui.exe ← 图形界面(需 GUI 环境) ├── doc/ │ └── cmake/ ← 所有 HTML 文档根目录(含你看到的 genindex.html 等) ├── share/ │ ├── cmake-3.26/ ← 模块库(FindXXX.cmake、CMakePackageConfigHelpers.cmake 等) │ └── licenses/ ← MIT 许可证文本 └── LICENSE提示:
cmake.exe不在根目录,也不在doc/下——它严格位于bin/子目录。这是官方约定,避免与文档混淆。若解压后bin/为空,请立即校验 ZIP 完整性(SHA256 值见官网发布页),而非重试解压。
2.2 验证二进制完整性:用 Windows 自带工具校验 SHA256
CMake 官方在 https://cmake.org/download/ 页面提供每个版本的 SHA256 校验值。Windows 10/11 用户无需额外工具,直接用 PowerShell:
# 进入 ZIP 所在目录,假设文件名为 cmake-3.26.6-windows-x86_64.zip Get-FileHash .\cmake-3.26.6-windows-x86_64.zip -Algorithm SHA256 | Format-List输出类似:
Algorithm : SHA256 Hash : 8A3F2D1E9B7C4F6A0D5E8B1C3F7A9D2E5B6C8A0F1D2E3F4A5B6C7D8E9F0A1B2C Path : C:\Downloads\cmake-3.26.6-windows-x86_64.zip将Hash值与官网公布的 SHA256 对比。不匹配则绝对不可用——常见于断点续传失败、HTTP 代理缓存污染、或镜像站同步延迟(如清华源偶尔滞后 1–2 小时)。此时应换源(推荐 https://mirrors.tuna.tsinghua.edu.cn/cmake/ )或直连官网。
2.3 注入系统 PATH:两种方式,按场景选
方式一:临时会话级(推荐用于 CI/CD 或单次调试)
在 PowerShell 或 CMD 中执行(以C:\tools\cmake-3.26.6为解压路径):
# PowerShell 临时生效(当前窗口有效) $env:PATH = "C:\tools\cmake-3.26.6\bin;" + $env:PATH cmake --version # 应输出 3.26.6:: CMD 临时生效 set PATH=C:\tools\cmake-3.26.6\bin;%PATH% cmake --version方式二:永久用户级(开发机日常使用)
不要改系统 PATH(易引发 VS 工具链冲突),改当前用户的环境变量:
- Win+R →
sysdm.cpl→ “高级”选项卡 → “环境变量” - 在“用户变量”区域,找到
Path→ “编辑” → “新建” → 输入C:\tools\cmake-3.26.6\bin - 重启所有已打开的终端窗口(CMD/PowerShell/VS Code 终端),否则 PATH 不刷新
参数说明:
cmake.exe是静态链接的,不依赖vcruntime140.dll等运行时。但若你在旧版 Windows 7 上运行失败(报错MSVCP140.dll 丢失),说明该系统缺少 Visual C++ 2015–2022 运行时——请单独安装 Microsoft Visual C++ Redistributable for Visual Studio 2022 ,这是唯一外部依赖。
3. 配置工程:从空目录到生成 Visual Studio 解决方案的完整链路
3.1 最小可行 CMakeLists.txt:三行启动一个 Win32 控制台项目
新建目录hello-cmake/,创建CMakeLists.txt:
# CMakeLists.txt cmake_minimum_required(VERSION 3.26.6) # 显式锁定版本,防 CI 环境漂移 project(hello LANGUAGES CXX) # 声明项目名和语言,CXX 启用 C++ 标准 add_executable(hello main.cpp) # 声明可执行文件,自动关联同名源文件再创建main.cpp:
#include <iostream> int main() { std::cout << "Hello from CMake 3.26.6 on Windows x86_64!\n"; return 0; }3.2 命令行生成 Visual Studio 2022 解决方案
打开 PowerShell,进入hello-cmake/目录:
# 创建构建目录(强烈建议分离源码与构建产物) mkdir build && cd build # 生成 Visual Studio 2022 解决方案(x64 平台) cmake -G "Visual Studio 17 2022" -A x64 .. # 编译(等效于在 VS 中按 Ctrl+Shift+B) cmake --build . --config Release # 运行结果 .\Release\hello.exe # 输出:Hello from CMake 3.26.6 on Windows x86_64!逻辑说明:
-G参数指定生成器(Generator),"Visual Studio 17 2022"是 CMake 内置名称,对应 VS2022;-A x64指定目标架构(非Win64,后者是旧版别名);..是源码目录路径。CMake 会自动探测 VS2022 安装路径(通过注册表),无需手动指定VCINSTALLDIR。
3.3 使用 Ninja 生成器提速:CI 场景下的事实标准
Ninja 比 MSBuild 快 3–5 倍,且输出更干净。先确保已安装 Ninja( https://github.com/ninja-build/ninja/releases )并加入 PATH:
# 清空旧构建目录 rm -r build; mkdir build; cd build # 生成 Ninja 构建文件 cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .. # 构建(无 --config 参数,Ninja 无配置概念) cmake --build . # 运行 .\hello.exe参数说明:
-DCMAKE_BUILD_TYPE=Release是 Ninja 的必需参数(MSVC 生成器可省略);cmake --build .在 Ninja 下等价于ninja命令,但更跨平台。若报错ninja: command not found,说明 Ninja 未在 PATH 中——检查where ninja是否返回路径。
4. 避坑指南:Windows 下 CMake 3.26.6 的五个血泪经验
4.1 现象:CMake Error at C:/Qt/Qt5.9.4/5.9.4/msvc2017_64/lib/cmake/Qt5/Qt5Config.cmake:xx
原因:Qt 官方预编译库的Qt5Config.cmake依赖旧版 CMake 的find_package()行为,而 3.26.6 默认启用CMP0149策略(要求find_package(Qt5 REQUIRED)必须显式声明REQUIRED)。Qt5.9.4 的 Config 文件未适配此策略。
解决:在CMakeLists.txt顶部添加策略禁用(仅对 Qt5 兼容):
cmake_minimum_required(VERSION 3.26.6) cmake_policy(SET CMP0149 NEW) # 或 SET CMP0149 OLD 临时降级 find_package(Qt5 REQUIRED COMPONENTS Core Widgets)4.2 现象:CMake Error at /usr/share/cmake-4.2/modules/CMakeDetermineCompilerId.cmake:9(Windows 下出现/usr/share路径)
原因:你误用了 Linux/macOS 的 CMake 预设文件(CMakePresets.json),其中cacheVariables或environment字段硬编码了 Unix 路径;或 VS Code 的 CMake Tools 插件缓存了跨平台 preset。
解决:删除项目根目录下的CMakeUserPresets.json和build/目录;在 Windows 上只用 Windows-native preset:
// CMakeUserPresets.json(Windows 专用) { "version": 3, "configurePresets": [{ "name": "win-vs2022-x64", "displayName": "VS 2022 x64", "generator": "Visual Studio 17 2022", "architecture": "x64", "binaryDir": "${sourceDir}/build" }] }4.3 现象:Could NOT find OpenSSL (missing: OPENSSL_CRYPTO_LIBRARY),即使已安装 OpenSSL for Windows
原因:CMake 3.26.6 默认搜索OpenSSL_ROOT_DIR环境变量,但多数 Windows OpenSSL 安装包(如 Shining Light)不设置此变量,且find_package(OpenSSL)不再默认扫描注册表。
解决:两种方式任选其一
- 方式一(推荐):设置环境变量后重新运行 CMake
$env:OPENSSL_ROOT_DIR="C:\OpenSSL-Win64" cmake -G Ninja .. - 方式二:在
CMakeLists.txt中显式指定路径set(OPENSSL_ROOT_DIR "C:/OpenSSL-Win64" CACHE PATH "OpenSSL install root") find_package(OpenSSL REQUIRED)
4.4 现象:CMake Warning at CMakeLists.txt:5 (project): VERSION argument is empty
原因:project()命令中VERSION字段缺失,而 CMake 3.26.6 对project()的语义检查更严格(尤其在启用了CMAKE_POLICY_DEFAULT_CMP0135时)。
解决:显式声明版本号,即使为0.0.0:
project(mylib VERSION 0.0.0 LANGUAGES CXX) # 或更规范地: project(mylib VERSION 1.0.0 DESCRIPTION "My awesome library" HOMEPAGE_URL "https://example.com")4.5 现象:The system cannot find the path specified.(CMD 中执行cmake报错)
原因:PATH 中存在中文路径、空格路径、或cmake.exe上级目录名含特殊字符(如&,(,)),CMD 解析失败。PowerShell 无此问题。
解决:
- 将 CMake 安装路径改为纯英文、无空格(如
C:\tools\cmake-3.26.6) - 在 CMD 中用引号包裹命令:
"C:\tools\cmake-3.26.6\bin\cmake.exe" --version - 终极方案:弃用 CMD,统一用 PowerShell 或 Windows Terminal —— 这是 Windows 开发的事实标准。
5. 进阶技巧:用 CMake Presets 管理多平台构建与 CI 可复现性
5.1 为什么需要 Presets?告别cmake -G ... -D...的命令行泥潭
当你同时维护 Windows(VS2022)、Linux(Ninja)、macOS(Xcode)三个平台的构建,每次切换都要记忆不同参数组合:
- Windows:
cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_TOOLCHAIN_FILE=... - Linux:
cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/opt/myapp - macOS:
cmake -G Xcode -DCMAKE_OSX_DEPLOYMENT_TARGET=12.0
Preset 将这些固化为 JSON 配置,实现一键切换、团队共享、CI 复用。
5.2 创建跨平台CMakeUserPresets.json
在项目根目录创建CMakeUserPresets.json(注意:不是CMakePresets.json,后者由项目维护者提供,UserPresets供开发者覆盖):
{ "version": 3, "configurePresets": [ { "name": "win-vs2022-x64-release", "displayName": "Windows VS2022 x64 Release", "description": "Build with Visual Studio 2022, x64, Release config", "generator": "Visual Studio 17 2022", "architecture": "x64", "binaryDir": "${sourceDir}/build/win-vs2022-x64-release", "cacheVariables": { "CMAKE_BUILD_TYPE": "Release" } }, { "name": "win-ninja-debug", "displayName": "Windows Ninja Debug", "description": "Fast debug build with Ninja", "generator": "Ninja", "binaryDir": "${sourceDir}/build/win-ninja-debug", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "CMAKE_EXPORT_COMPILE_COMMANDS": "ON" } } ], "buildPresets": [ { "name": "win-vs2022-x64-release-build", "configurePreset": "win-vs2022-x64-release", "configuration": "Release" } ] }5.3 在 VS Code 中无缝集成(CMake Tools 插件)
- 安装 CMake Tools 插件
- 打开项目文件夹,插件自动检测
CMakeUserPresets.json - 按
Ctrl+Shift+P→ “CMake: Select a Configure Preset” → 选择win-vs2022-x64-release - 按
Ctrl+Shift+P→ “CMake: Configure” → 自动生成构建文件 - 按
Ctrl+Shift+P→ “CMake: Build” → 自动调用cmake --build
验证方法:构建成功后,检查
build/win-vs2022-x64-release/目录下是否生成ALL_BUILD.vcxproj和ZERO_CHECK.vcxproj;运行cmake --build . --config Release --target INSTALL应静默完成安装(若定义了install()命令)。
5.4 CI/CD 中复现本地构建:GitHub Actions 示例
在.github/workflows/ci.yml中复用 preset:
jobs: build-win: runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Setup CMake uses: jwlawson/actions-setup-cmake@v1 with: cmake-version: '3.26.6' - name: Configure (Preset) run: cmake --preset win-vs2022-x64-release - name: Build run: cmake --build --preset win-vs2022-x64-release-build - name: Test run: ctest --preset win-vs2022-x64-release-test关键点:
--preset参数直接读取CMakeUserPresets.json,无需硬编码-G或-D,保证 CI 与本地构建 100% 一致。若 CI 报错Unknown preset,检查 JSON 文件名是否拼错(必须是CMakeUserPresets.json,大小写敏感),且文件在仓库根目录。
从那以后我每次新建 C++ 项目,都强制走一遍cmake --preset流程——不是为了炫技,而是因为 preset 文件本身成了项目契约:它明确定义了“这个项目在什么环境下能构建成功”,比 README 里的文字描述可靠十倍。当新同事 clone 代码后,只需cmake --preset win-ninja-debug && cmake --build --preset win-ninja-debug-build两行命令,就能跑通整个构建链,而不是在 Slack 里问“你装了啥版本的 Qt”。希望帮到你。
本文还有配套的精品资源,点击获取