C++如何使用CMake构建项目_C++ CMakeLists.txt编写入门教程


首先给出明确答案,CMake是C++项目中主流的构建系统生成工具,通过编写CMakeLists.txt文件生成跨平台构建文件。具体描述:文章介绍了CMake的基本使用流程,从环境准备、简单项目构建到多文件多目录管理,涵盖编译器与CMake安装验证、最小CMakeLists.txt编写、外部构建目录创建、静态库添加、C++标准设置及target_include_directories等现代CMake最佳实践,并指出其跨平台特性与扩展功能方向。顺序与原文一致,内容完整无截断。

c++如何使用cmake构建项目_c++ cmakelists.txt编写入门教程

C++项目管理中,CMake 是目前最主流的构建系统生成工具之一。它不直接编译代码,而是根据 CMakeLists.txt 文件生成适用于不同平台的构建文件(如 Makefile 或 Visual Studio 工程)。本文将带你从零开始编写一个简单的 CMakeLists.txt,快速上手 C++ 项目的 CMake 构建流程。

1. 准备工作:安装 CMake 和编译器

在使用 CMake 前,请确保你的系统已安装:

  • 一个 C++ 编译器(如 GCC、Clang 或 MSVC)
  • CMake(建议版本 3.10 以上)

可通过终端运行以下命令验证是否安装成功:

cmake --version
g++ --version

2. 创建最简单的 C++ 项目

假设你的项目结构如下:

my_project/
├── CMakeLists.txt
└── main.cpp

先创建 main.cpp

#include iostream>

int main() {
std::cout return 0;
}

然后创建同目录下的 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(MyProject)

add_executable(myapp main.cpp)

说明:

  • cmake_minimum_required:指定所需最低 CMake 版本
  • project:定义项目名称(可选添加 VERSION 和 LANGUAGES)
  • add_executable:将源文件编译为可执行文件,myapp 是输出的程序名

3. 构建并运行项目

在项目根目录下打开终端,执行:

mkdir build
cd build
cmake ..
cmake --build .

解释:

  • 创建 build 目录用于存放中间文件,避免污染源码(推荐做法)
  • cmake .. 读取上级目录的 CMakeLists.txt 并生成构建系统
  • cmake --build . 调用底层构建工具(如 make)编译项目

构建成功后,在 build 目录会生成可执行文件 myapp,运行它:

Viggle AI Video Viggle AI Video

Powerful AI-powered animation tool and image-to-video AI generator.

Viggle AI Video 115 查看详情 Viggle AI Video ./myapp

应输出:Hello from CMake!

4. 添加多个源文件和子目录

当项目变大时,通常会组织成多个源文件和子目录。例如:

my_project/
├── CMakeLists.txt
├── main.cpp
├── src/
│ ├── math.cpp
│ └── math.h
└── include/
└── math.h

修改顶层 CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(MyProject)

# 指定头文件搜索路径
include_directories(include)

# 添加可执行文件
add_executable(myapp main.cpp src/math.cpp)

如果你希望模块化管理 src 目录,可以添加子 CMakeLists.txt:

# my_project/src/CMakeLists.txt
add_library(math_lib STATIC math.cpp)

然后在主 CMakeLists.txt 中包含该目录:

cmake_minimum_required(VERSION 3.10)
project(MyProject)

include_directories(include)
add_subdirectory(src)

add_executable(myapp main.cpp)
target_link_libraries(myapp math_lib)

这里使用了:

  • add_subdirectory:包含子目录中的 CMakeLists.txt
  • add_library(... STATIC):创建静态库
  • target_link_libraries:将库链接到目标可执行文件

5. 设置 C++ 标准

现代 C++ 项目常使用 C++11/14/17/20。可在 CMakeLists.txt 中指定:

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF) # 禁用编译器扩展(更标准)

或者针对特定目标设置(推荐):

target_compile_features(myapp PRIVATE cxx_std_17)

6. 常见技巧与注意事项

  • 始终使用 build 目录进行外部构建
  • 使用 target_include_directories 替代全局 include_directories,更安全:
  • target_include_directories(myapp PRIVATE include)
  • 通过 cmake-guiccmake 查看和配置变量
  • 跨平台时可用 if(MSVC)if(UNIX) 分支处理差异

基本上就这些。掌握以上内容,你已经能用 CMake 管理大多数中小型 C++ 项目。随着项目复杂度上升,可进一步学习 find_package、自定义函数、导出配置等高级功能。CMake 虽语法略显独特,但一旦熟悉,其跨平台能力非常强大。

以上就是C++如何使用CMake构建项目_C++ CMakeLists.txt编写入门教程的详细内容,更多请关注其它相关文章!


# cmake  # c++  # AI-powered  # red  # stream  # ios  # unix  # ai  # 工具  # app  # 敦化定制网站建设公司  # 巫溪公司网站推广招聘  # 广东seo软件获客软件  # seo专员具备哪些能力  # 西安网站优化内容  # 连云港湖南网站优化推广  # seo和sem的比较  # 推荐seo书籍  # 网站设计建设专家名单查询  # 丽水seo加盟  # 适用于  # 如果你  # 第三方  # 微软  # 多个  # 随机数  # 如何使用  # 自定义  # 可执行文件 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 纯CSS实现滚动时动态时间轴线条颜色填充效果  从J*a应用程序中导出MySQL表数据的技术指南  edge浏览器怎么修改语言为中文_Edge界面语言切换教程  《随手记》关闭首页消息推送方法  如何在mysql中设计餐饮点餐系统_mysql点餐系统项目实战  动漫岛汉化官网网 动漫岛官方动漫汉化地址  《星露谷物语》克林特好感度事件介绍  《新三国志曹操传》游历事件袁尚突围攻略  创客贴登录页面入口 创客贴网页版最新网址链接  苹果手机缓存怎么清除_苹果手机缓存如何清除iphone各版本操作步骤  腾讯QQ邮箱官方入口 QQ邮箱网页版登录平台  word文档行距怎么调?word文档调行距的操作步骤  QQ邮箱注册地址 免费获取QQ邮箱账号  高德地图怎么查看未来行程规划_高德地图未来行程规划查看方法  yy漫画官方网站登录入口_yy漫画在线阅读页面地址  todesk如何添加信任设备_todesk信任设备设置教程  《via浏览器》强制缩放网页设置方法  Flexbox布局实践:实现底部页脚与顶部粘性导航条的完美结合  抖音官网入口快速访问 抖音网页版账号注册解析  c++中的const关键字用法大全_c++ const正确使用指南  德邦快递查询入口登录官网 德邦快递单号查询系统入口  C++中的explicit关键字有什么作用_C++类型转换控制与explicit使用  Flask 应用中图片动态更新与上传:实现客户端定时刷新与服务器端文件管理  在Django中动态检查模型关联:一种灵活的解决方案  苹果电脑如何快速截图并编辑 苹果电脑截屏标注快捷操作  如何用Golang优化微服务间请求性能_Golang 微服务请求性能优化方法  实现可重用自定义Python Range类  海棠阅读登录教程_详细讲解海棠登录操作  优化CSS动画与J*aScript定时器协同:构建稳定Toast提示  win11如何诊断DirectX问题 Win11运行dxdiag工具排查显卡故障【排错】  汽水音乐网页端访问 汽水音乐官方网页直达  DeepSeek超全面指南:入门必看  《跳跳舞蹈》循环播放方法  百度浏览器无法安装扩展程序_百度浏览器插件安装失败原因解析  Yandex浏览器官方入口_Yandex搜索引擎中文版  CodeIgniter 3 连接 SQL Server:正确获取查询结果的教程  PPT页面尺寸怎么修改 PPT自定义幻灯片大小与方向设置【教程】  composer licenses 命令:如何检查项目依赖的许可证?  作业帮网页版不用下载入口 在线问老师快速答疑  晓晓优选app支付宝绑定方法  热血江湖归来医师加点攻略  CSS过渡如何实现按钮悬停效果_transition属性控制背景颜色变化  J*a列表元素格式化输出教程  《kimi智能助手》制作ppt教程  Composer如何使用composer-plugin-api开发自定义插件  微信客户端如何找回密码_微信客户端忘记密码找回方法  外媒评《燕云十六声》DIY载具新玩法:很像《塞尔达传说王国之泪》!  谷歌邮箱怎么换绑定邮箱Gmail安全备份邮箱修改方法  抖音团长模式怎么做?团长模式是什么意思?  C++ bind函数使用教程_C++参数绑定与函数适配器的应用 

 2025-11-29

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.