讲师中心 微信公众号
AI工具推荐 视频效率加速

CMake安装后怎么用?新手完整教程

浅敏酱_6056

浅敏酱_6056

发布时间:2026-08-07 15:31:26

|

984人浏览过

|

来源于php中文网

原创

CMake命令必须在独立构建目录中执行,不可在源码根目录运行cmake .,否则会污染源码目录;最小可用CMakeLists.txt需包含cmake_minimum_required、project和add_executable三行;构建流程分两步:cmake生成构建文件,后端工具(如make)执行编译;install目标需手动触发,且默认前缀/usr/local需sudo权限。

cmake安装后怎么用?新手完整教程

cmake 命令必须在构建目录里执行

直接在源码根目录下运行 cmake . 看似省事,但会污染源码目录——生成 CMakeCache.txt、CMakeFiles/、Makefile 等中间文件,Git 提交时容易误提交,协作时也容易引发冲突。

正确做法是新建一个独立的构建目录:

  • mkdir build && cd build
  • cmake ..(注意是两个点,指向源码目录)
  • 后续所有构建命令都在 build/ 目录下运行

这样源码目录干净,且可并行使用多个构建目录(比如 build-debug 和 build-release),互不干扰。

CMakeLists.txt 至少要写这三行

新手常卡在写不出能跑的 CMakeLists.txt。其实最小可用版本就三行,缺一不可:

  • cmake_minimum_required(VERSION 3.10):指定最低 CMake 版本,低于该版本会报错退出
  • project(myapp):声明项目名,同时隐式定义变量 PROJECT_NAME 和 PROJECT_VERSION
  • add_executable(myapp main.cpp):告诉 CMake 编译哪个可执行文件、用哪些源文件

注意:add_executable 的第一个参数是输出的可执行文件名,不是源文件名;第二个及之后的参数才是源文件路径(支持多个,用空格分隔)。

make 不是 cmake 的子命令,而是独立工具

执行完 cmake .. 后,CMake 只是生成了构建系统(比如 Linux 下是 Makefile),真正编译靠的是 make(或 ninja、msbuild 等后端工具)。

常见误区:

C++14
C++14

C++14 对 C++11 的修正与增强版本,适合旧系统维护和较老工具链兼容。

下载
  • 误以为 cmake --build 是“高级写法”——其实它只是封装,底层仍调用 make 或对应构建器
  • 在 Windows 上用 Visual Studio 生成器时,cmake --build . 实际调用的是 msbuild,不是 make
  • 想看编译命令细节?加 make VERBOSE=1,而不是 cmake VERBOSE=1

所以构建流程本质是两步分离的:CMake 负责“生成规则”,后端构建工具负责“执行规则”。

install 目标默认不生效,得手动触发

即使你在 CMakeLists.txt 里写了 install(TARGETS myapp DESTINATION bin),运行 make 也不会把可执行文件复制到 /usr/local/bin(或你设的 CMAKE_INSTALL_PREFIX)。

必须显式执行安装步骤:

  • make install(对应 Makefile 后端)
  • cmake --build . --target install(更通用,跨后端一致)

默认安装前缀是 /usr/local,Linux 下写入需要 sudo 权限;开发调试时建议用本地路径,比如:

cmake -DCMAKE_INSTALL_PREFIX=$HOME/myapp-install ..

否则 make install 会静默失败或权限拒绝,新手常以为 install() 指令没起作用。

最易被忽略的点:CMake 不会自动帮你清理旧构建产物。改了 CMakeLists.txt 后,如果只是重新 cmake ..,旧的缓存可能让改动不生效;稳妥做法是删掉整个 build/ 目录再重来。

热门AI工具

更多
立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
C++ 跨平台开发
C++ 跨平台开发

本专题聚焦 C++ 在跨平台应用与工程构建中的实战应用,系统讲解 CMake 构建系统、跨平台编译配置、第三方库集成、调试技巧、静态与动态链接库管理等核心知识。通过实战案例(如跨平台工具开发、Linux与Windows编译兼容性项目),帮助学习者掌握 从环境配置到完整跨平台构建的开发能力。

7046

2025.10.17

c++  cmake用法
c++ cmake用法

本专题整合了c++ cmake用法相关教程,阅读专题下面的文章了解更多详细内容。

1651

2025.10.23

C++ 编译构建系统与CMake实战
C++ 编译构建系统与CMake实战

本专题聚焦 C++ 项目的编译与构建体系,系统讲解 CMake 的核心语法、项目结构设计、库与依赖管理、跨平台构建、调试与发布配置。通过完整项目示例,帮助开发者掌握 从源码到可执行程序的工程化构建流程,提升 C++ 项目在实际开发中的可维护性与扩展性。

374

2025.12.13

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

40

2026.10.28

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

20

2026.10.28

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

0

2026.10.28

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

120

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

80

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

60

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
LLVM CMake构建指南
LLVM CMake构建指南

共0课时 | 0人学习

LLVM入门手册
LLVM入门手册

共0课时 | 0人学习

CMake 与 Conan 集成实践
CMake 与 Conan 集成实践

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn