新闻中心
C++怎么使用CMake构建项目_C++工程管理与CMakeLists.txt编写
使用CMake构建C++项目需先创建项目结构,编写CMakeLists.txt文件,设置最低版本、项目信息、C++标准,添加可执行目标并包含头文件路径,通过mkdir build; cd build; cmake ..; cmake --build .编译,支持多源文件管理与库链接。

使用CMake构建C++项目是现代C++开发中的常见做法。它能跨平台管理编译过程,让项目结构清晰、易于维护。下面介绍如何从零开始用CMake构建一个简单的C++工程,并编写合适的CMakeLists.txt文件。
创建基本项目结构
一个典型的C++项目目录结构如下:
my_project/├── CMakeLists.txt
├── src/
│ └── main.cpp
└── include/
└── my_header.h
首先在项目根目录创建CMakeLists.txt,这是CMake的配置核心文件。
编写CMakeLists.txt
以下是一个基础但完整的CMakeLists.txt示例:
cmake_minimum_required(VERSION 3.10)project(MyProject VERSION 1.0 LANGUAGES CXX)
# 设置C++标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 包含头文件目录
target_include_directories(MyProject PRIVATE include)
# 添加可执行文件
add_executable(${PROJECT_NAME} src/main.cpp)
说明:
- cmake_minimum_required:指定所需最低CMake版本
- project:定义项目名称、版本和语言
- CMAKE_CXX_STANDARD:设置C++标准(如11、14、17、20)
- add_executable:将源文件编译为可执行程序
- target_include_directories:为目标添加头文件搜索路径
编译项目
在项目根目录执行以下命令:
mkdir buildcd build
cmake ..
cmake --build .
这会生成构建系统(如Makefile或Visual Studio工程),然后编译出可执行文件。输出文件通常位于build目录下。
美图云修
商业级AI影像处理工具
50
查看详情
添加多个源文件和子目录
如果项目变大,可以组织成模块。例如,在src下添加更多.cpp文件:
# 在CMakeLists.txt中列出所有源文件set(SOURCES
src/main.cpp
src/utils.cpp
src/logger.cpp
)
add_executable(${PROJECT_NAME} ${SOURCES})
也可以使用aux_source_directory自动收集源文件:
aux_source_directory(src SOURCES)add_executable(${PROJECT_NAME} ${SOURCES})
注意:这种方式不够精确,建议显式列出文件以提高可读性和控制力。
链接库文件
若需链接静态库或动态库,使用target_link_libraries:
add_library(mylib STATIC src/mylib.cpp)add_executable(app src/main.cpp)
target_link_libraries(app mylib)
对于第三方库,可用find_package查找:
find_package(OpenCV REQUIRED)target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
target_include_directories(${PROJECT_NAME} PRIVATE ${OpenCV_INCLUDE_DIRS})
基本上就这些。掌握CMake的关键是理解“目标”(target)的概念——每个可执行文件或库都是一个目标,通过tar
get_开头的命令对其进行配置。随着项目增长,可以把子目录做成独立模块,用add_subdirectory引入,实现良好分层。
以上就是C++怎么使用CMake构建项目_C++工程管理与CMakeLists.txt编写的详细内容,更多请关注其它相关文章!
# 都是
# seo岗位怎么面试的
# 什么是特斯拉seo
# 麻城网站优化
# 外贸邮件营销推广策略
# 成都seo优化排名工具
# 河源营销型网站优化
# 站内营销推广详细步骤图
# 本溪关键词排名团队
# 恩施品牌网站优化设计
# 南宁网站建设哪家好点
# 这是
# 是一个
# app
# 操作方法
# 可执行
# 如何使用
# 头文件
# 可执行文件
# 工程管理
# 美图
# red
# c++开发
# c++
# ai
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
J*a编写用户注册与登录功能_掌握字符串与验证逻辑
Win11蓝牙耳机断连怎么解决 Win11蓝牙设置重新配对与驱动更新【技巧】
Win11怎么修改默认浏览器_Windows 11设置Chrome为默认
深入理解J*a合成构造器:何时以及为何阻止其生成
汽水音乐在线解析 汽水音乐在线解析入口
实现分段式页面滚动导航:CSS与J*aScript教程
HTML转PPT成品工具有哪些?HTML网页转PPT成品工具大全
C++的std::mdspan是什么_C++23中用于操作多维数组的非拥有视图
腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程
快手官方唯一登录入口 谨防山寨钓鱼网站
QQ邮箱官网登录入口 QQ邮箱网页版邮箱快速登录
星露谷物语官网入口 星露谷物语游戏官网入口
Go语言JSON解析深度指南:动态访问与结构体映射实践
J*aScript中在Map循环中检测并处理空数组元素
qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程
单射、满射与双射的关系 一文理清所有逻辑
在J*a中如何使用BigDecimal进行高精度计算_BigDecimal类应用指南
京东京造J1和网易云音乐氧气真无线有什么不同_国产电商蓝牙耳机音质对比
PS5 Pro有点优势但不多! 《燕云十六声》PS5平台与PC性能画面对比
生成rdflib自定义SPARQL函数:参数匹配与实践指南
《噬血代码2》新预告片发布 展示游戏剧情
qq音乐在线播放入口_qq音乐电脑版登录链接
Fabric Mod开发:在1.19.3+版本中正确添加自定义物品并管理物品组
qq游戏免费畅玩入口_qq游戏电脑版快速启动
Yandex官网免登录入口_俄罗斯Yandex搜索引擎一键访问
QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台
没有大陆身份证/银行卡如何实名微信? 亲测有效的几种方法分享
2025年云电脑操作系统体验 | 无需本地硬件,随时随地使用高性能PC
知音漫客正版漫画平台_知音漫客官网账号登录
Web Components中自定义开关组件状态同步的常见陷阱与解决方案
Win11怎么隐藏桌面图标 Win11一键隐藏所有桌面元素及恢复显示
必由学官方网站入口 必由学学生教师共用登录通道
163邮箱登录密码 163邮箱忘记密码找回
Node.js CSV 数据处理:基于字段空值条件过滤整条记录的策略
深入理解字体排版:Adobe光学字偶距与CSS字偶距的差异与实现
c++ dfs和bfs代码 c++深度广度优先搜索算法
抖音网页版快捷访问 抖音网页版网页版入口操作教程
WordPress插件开发:正确注册卸载钩子与避免常见陷阱
CSS条件样式无法按设备触发怎么排查_media条件语句正确设置解决触发问题
服务端验证_j*ascript输入检查
蛙漫2日版入口 WAMAN2(日版)无删减漫画官网链接
win11 Snap Layouts怎么用 Win11窗口布局与分屏多任务高效指南【必学】
在Go Martini框架中高效服务动态生成图像的实践指南
极速漫画官方主页网址 极速漫画漫画在线浏览官网链接
天眼查企业查询官网入口 天眼查官方网页版查询
C++指针和引用有什么区别_C++内存管理核心概念深度解析
最新韩小圈网页版登录入口_官网在线观看官方链接
QQ邮箱网页版登录入口 QQ邮箱官方在线使用平台
163邮箱网页版入口导航平台 163邮箱网页版登录入口官网导航
AO3最新官网入口公告_2025AO3镜像站实时查询方法


2025-11-25
浏览次数:次
返回列表