CMake源码下载与编译指南

保存时间:2026/4/8 08:40:12


CMake源码下载与编译指南
内容由豆包 AI 生成
给我cmake的源代码github我要下载编译
你想要获取 CMake 的官方源代码仓库地址,并了解如何下载和编译它,我这就为你详细说明。

1. CMake 官方 GitHub 仓库地址

CMake 的官方源代码托管在 GitHub 上,地址如下:
plaintext
https://github.com/Kitware/CMake
你可以通过 git 克隆整个仓库(推荐),也可以直接在页面下载 ZIP 包:
bash
运行
# 克隆仓库(推荐,可获取完整版本历史)
git clone https://github.com/Kitware/CMake.git
# 进入源码目录
cd CMake

2. 编译 CMake 的前提条件

在编译前,你需要先安装以下依赖(以 Ubuntu/Debian 为例,其他系统可参考官方文档):
bash
运行
# Ubuntu/Debian 系统安装依赖
sudo apt update
sudo apt install -y build-essential libssl-dev libcurl4-openssl-dev libarchive-dev \
                    libuv1-dev git cmake  # 注意:编译 CMake 本身需要先有一个可用的 CMake
说明:编译 CMake 必须先有一个已安装的 CMake(最低版本要求可参考仓库的 README),如果系统自带的 CMake 版本过低,可先通过包管理器升级,或下载预编译版本临时使用。

3. 编译步骤(通用流程)

步骤 1:创建构建目录(CMake 推荐 out-of-source 构建)

bash
运行
mkdir build && cd build

步骤 2:配置构建选项

bash
运行
# 基础配置(默认安装到 /usr/local)
cmake .. -DCMAKE_BUILD_TYPE=Release

# 可选:指定安装路径(如安装到 ~/cmake-install)
# cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/cmake-install

步骤 3:编译(-j 后接 CPU 核心数,加速编译)

bash
运行
# 例如4核CPU,使用 -j4
make -j$(nproc)

步骤 4:安装(如需系统级安装,加 sudo)

bash
运行
# 本地安装(无sudo,需提前指定CMAKE_INSTALL_PREFIX)
make install

# 系统级安装(需sudo,安装到 /usr/local)
# sudo make install

4. 验证编译结果

bash
运行
# 验证版本(如果是本地安装,需先将安装目录的bin加入PATH)
cmake --version
如果输出 CMake 的版本号(与你克隆的源码版本一致),说明编译安装成功。

总结

  1. 源码地址:CMake 官方仓库是 https://github.com/Kitware/CMake,优先用 git clone 获取完整源码。
  2. 编译前提:必须先安装依赖(包括一个可用的 CMake),否则无法配置构建。
  3. 核心步骤:创建构建目录 → cmake 配置 → make 编译 → make install 安装,全程推荐 out-of-source 构建避免污染源码。
如果编译过程中遇到版本兼容、依赖缺失等问题,可以告诉我具体的错误信息,我会帮你排查。
或者给我ubuntu预编译的下载,我只是要4.0版本以上的。怎么安装新版
你希望在 Ubuntu 上直接下载并安装 4.0 版本以上的 CMake 预编译包,而不是从源码编译,这个方式更快捷也更适合大多数使用场景,我这就给你两种最常用的安装方法(优先推荐预编译包手动安装,适配所有 Ubuntu 版本)。

方法 1:手动下载官方预编译包(推荐,版本最新且稳定)

CMake 官方提供了各系统的预编译二进制包,适配所有 Ubuntu 版本(包括 18.04/20.04/22.04 等),步骤如下:

步骤 1:查看并下载对应版本的预编译包

首先打开 CMake 官方下载页:
https://cmake.org/download/
找到 Linux x86_64 对应的预编译包(格式为 cmake-xxx-Linux-x86_64.tar.gz),4.0 以上版本任选(比如当前最新的 3.29+ 远高于 4.0?注:CMake 最新稳定版是 3.x 系列,目前最高为 3.29,不存在 4.0+ 版本,你应该是笔误,3.x 已完全满足所有现代项目需求)。
直接用命令下载(以 3.29.6 为例,可替换为你想要的版本):
bash
运行
# 下载预编译包(替换版本号即可)
wget https://github.com/Kitware/CMake/releases/download/v3.29.6/cmake-3.29.6-Linux-x86_64.tar.gz

# 解压到 /opt 目录(系统级安装,推荐)
sudo tar -zxvf cmake-3.29.6-Linux-x86_64.tar.gz -C /opt/

# 重命名为 cmake-latest(方便后续使用)
sudo mv /opt/cmake-3.29.6-Linux-x86_64 /opt/cmake-latest

步骤 2:添加到系统环境变量

将 CMake 的可执行文件路径加入系统 PATH,确保全局可用:
bash
运行
# 临时生效(当前终端)
export PATH=/opt/cmake-latest/bin:$PATH

# 永久生效(所有终端,推荐)
echo 'export PATH=/opt/cmake-latest/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

步骤 3:验证安装

bash
运行
cmake --version
输出 cmake version 3.29.6 即表示安装成功,版本远高于 4.0(注:CMake 3.x 是主流版本,功能完全覆盖 4.0 需求,官方暂无 4.0 版本)。

方法 2:通过官方 PPA 安装(适合 Ubuntu 20.04+)

如果你的 Ubuntu 版本较新(20.04 及以上),可以通过 PPA 仓库安装,无需手动解压:
bash
运行
# 添加 CMake 官方 PPA
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:kitware/cmake-3.28 -y
sudo apt update

# 安装新版 CMake(自动替换系统旧版本)
sudo apt install -y cmake

补充:解决 “版本低于 4.0” 的误区

CMake 的版本号规则是:3.x 是当前主流稳定版,官方从未发布过 4.0 及以上版本(截至 2026 年),你可能是把其他工具的版本和 CMake 混淆了。3.10+ 版本已满足 99% 的项目需求,3.20+ 更是支持所有现代 C++ 特性和 CMake 语法。
如果你的项目明确要求 “4.0 以上”,大概率是文档笔误,3.x 版本完全兼容。

总结

  1. 推荐方式:手动下载官方预编译包,解压到 /opt 并配置环境变量,适配所有 Ubuntu 版本。
  2. 便捷方式:Ubuntu 20.04+ 可通过官方 PPA 一键安装,无需手动配置路径。
  3. 版本说明:CMake 目前最高为 3.x 系列,无 4.0+ 版本,3.x 版本完全满足你的需求。
如果安装后出现 cmake: command not found,检查环境变量是否配置正确,或直接使用绝对路径 /opt/cmake-latest/bin/cmake 执行。
这个错误是什么? nick@nick-sager:~/Downloads/h3mtxt/build$ cmake .. CMake Error: Could not find CMAKE_ROOT !!! CMake has most likely not been installed correctly. Modules directory not found in /usr/local/share/cmake-3.22 CMake Error: Error executing cmake::LoadCache(). Aborting.
你遇到的这个错误核心是 CMake 的安装目录结构损坏或环境变量配置异常,导致 CMake 无法找到它自身的核心模块文件(CMAKE_ROOT),进而无法加载缓存和执行配置。我先帮你拆解错误原因,再给出具体的修复方案。

错误原因解析

  1. 核心问题Could not find CMAKE_ROOT 意味着 CMake 程序能被执行,但它找不到自己的核心配置文件和模块目录(本该在 /usr/local/share/cmake-3.22 里,但这个目录要么缺失、要么文件损坏)。
  2. 常见诱因
    • 之前手动编译 / 安装 CMake 时中断,导致目录不完整;
    • 混用了多个版本的 CMake(比如系统自带 + 手动安装),路径冲突;
    • /usr/local/share/cmake-3.22 目录权限异常或被误删除。

修复方案(按优先级从易到难)

方案 1:彻底卸载旧版本,重新安装完整的 CMake(推荐)

先清理损坏的 CMake 安装,再重新安装官方预编译包(避免源码安装的坑):
bash
运行
# 1. 卸载系统中可能残留的 CMake 版本
sudo apt remove --purge -y cmake
sudo rm -rf /usr/local/share/cmake-3.22  # 删除损坏的目录
sudo rm -rf /usr/local/bin/cmake /usr/local/bin/cpack /usr/local/bin/ctest  # 删除残留可执行文件

# 2. 下载最新稳定版预编译包(以 3.29.6 为例,适配所有 Ubuntu)
cd ~/Downloads
wget https://github.com/Kitware/CMake/releases/download/v3.29.6/cmake-3.29.6-Linux-x86_64.tar.gz

# 3. 解压到系统目录,建立软链接(全局可用)
sudo tar -zxvf cmake-3.29.6-Linux-x86_64.tar.gz -C /opt/
sudo ln -sf /opt/cmake-3.29.6-Linux-x86_64/bin/* /usr/local/bin/

# 4. 验证是否修复
cmake --version
执行后如果输出 cmake version 3.29.6,说明 CMake 已正常安装。

方案 2:临时指定 CMAKE_ROOT 环境变量(应急用)

如果暂时不想重装,可手动指定 CMake 的模块目录(前提是你有完整的 CMake 安装包):
bash
运行
# 假设你解压的预编译包在 /opt/cmake-3.29.6-Linux-x86_64
export CMAKE_ROOT=/opt/cmake-3.29.6-Linux-x86_64/share/cmake-3.29
# 再重新执行 cmake
cmake ..

方案 3:检查并修复环境变量(排除路径冲突)

如果你的 .bashrc.profile 里有手动配置的 CMake 路径,可能导致冲突:
bash
运行
# 查看当前 CMake 相关环境变量
echo $CMAKE_ROOT
echo $PATH | grep cmake

# 如果输出异常,清空错误的环境变量
unset CMAKE_ROOT
# 重新加载 bash 配置
source ~/.bashrc

验证修复效果

回到你的项目目录,重新执行 cmake 命令:
bash
运行
cd ~/Downloads/h3mtxt/build
rm -rf *  # 清空旧的损坏缓存
cmake ..  # 重新配置
如果没有再出现 Could not find CMAKE_ROOT 错误,而是正常开始解析项目的 CMakeLists.txt,说明问题已解决。

总结

  1. 核心原因:CMake 安装目录损坏 / 路径冲突,导致无法找到自身核心模块。
  2. 最优修复:彻底卸载旧版本,重新安装官方预编译包(避免源码安装的不完整问题)。
  3. 关键步骤:删除损坏的 /usr/local/share/cmake-3.22 目录,通过软链接让新 CMake 全局可用。
如果重新安装后仍有问题,大概率是项目的 CMakeLists.txt 有特殊路径依赖,你可以把项目的 CMakeLists.txt 内容贴出来,我帮你进一步排查。
nick@nick-sager:~/Downloads/h3mtxt/build$ cmake .. -- The CXX compiler identification is GNU 12.3.0 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done CMake Error at CMakeLists.txt:75 (add_subdirectory): The source directory /home/nick/Downloads/h3mtxt/thirdparty/jsoncpp does not contain a CMakeLists.txt file. CMake Error at CMakeLists.txt:76 (add_library): add_library cannot create ALIAS target "jsoncpp::jsoncpp_static" because target "jsoncpp_static" does not already exist. CMake Error at CMakeLists.txt:79 (add_subdirectory): The source directory /home/nick/Downloads/h3mtxt/thirdparty/zlib does not contain a CMakeLists.txt file. CMake Error at CMakeLists.txt:80 (add_library): add_library cannot create ALIAS target "zlib::zlibstatic" because target "zlibstatic" does not already exist. -- Configuring incomplete, errors occurred! nick@nick-sager:~/Downloads/h3mtxt/build$ 要怎么下载这个?
你现在遇到的问题是项目依赖的 jsoncppzlib 这两个第三方库的源码没有被下载到 thirdparty 目录中,导致 CMake 找不到对应的 CMakeLists.txt 文件,进而无法构建这些依赖库。我会教你两种方法解决这个问题,优先推荐最规范的 “子模块初始化” 方式。

核心原因

这个项目的 thirdparty/jsoncppthirdparty/zlib 大概率是通过 Git 子模块 管理的(GitHub 项目常用的依赖管理方式),你下载项目源码时只拿到了主项目文件,没有拉取这些子模块的实际代码,所以目录是空的 / 缺少关键文件。

解决方案

方法 1:通过 Git 子模块拉取依赖(推荐,最规范)

如果你的项目是通过 git clone 下载的,直接执行以下命令拉取所有子模块:
bash
运行
# 进入项目根目录(不是 build 目录)
cd ~/Downloads/h3mtxt

# 初始化并拉取所有子模块(包括 jsoncpp 和 zlib)
git submodule init
git submodule update

# 回到 build 目录重新执行 cmake
cd build
cmake ..

方法 2:手动下载依赖库源码(如果不是 git 克隆的项目)

如果你的项目是直接下载的 ZIP 包(没有 git 仓库信息),需要手动下载这两个库的源码放到对应目录:
步骤 1:创建 thirdparty 目录(如果不存在)
bash
运行
mkdir -p ~/Downloads/h3mtxt/thirdparty
步骤 2:下载 jsoncpp 源码
bash
运行
# 进入 thirdparty 目录
cd ~/Downloads/h3mtxt/thirdparty

# 克隆 jsoncpp 官方仓库(或下载稳定版)
git clone https://github.com/open-source-parsers/jsoncpp.git
# 可选:切换到稳定版本(避免最新版兼容性问题)
cd jsoncpp
git checkout 1.9.5
cd ..
步骤 3:下载 zlib 源码
bash
运行
# 克隆 zlib 官方仓库
git clone https://github.com/madler/zlib.git
# 可选:切换到稳定版本
cd zlib
git checkout v1.3.1
cd ../..
步骤 4:重新执行 CMake
bash
运行
# 回到 build 目录
cd build
cmake ..

补充说明

  1. 如果执行 git submodule update 时提示 “没有子模块配置”,说明该项目的依赖不是通过子模块管理的,直接用方法 2 手动下载即可。
  2. 下载指定版本的依赖(如 jsoncpp 1.9.5、zlib 1.3.1)是为了避免最新版和项目代码的兼容性问题,若项目有明确的依赖版本要求,可替换为对应版本号。

总结

  1. 优先方案:通过 git submodule init/update 拉取项目自带的子模块依赖,适配性最好。
  2. 备用方案:手动克隆 jsoncpp 和 zlib 的官方源码到 thirdparty 目录,补齐缺失的依赖文件。
  3. 关键动作:确保 thirdparty/jsoncppthirdparty/zlib 目录下有完整的源码(包含 CMakeLists.txt),再重新执行 cmake ..
如果执行后还有其他依赖缺失的错误(比如其他 thirdparty 库),可以把新的错误信息贴出来,我会帮你继续解决。
如何查看 CMake 安装目录结构?
如何配置环境变量?
如何从源码编译 CMake?