C++如何使用CMake来构建项目?(入门指南)


CMake构建C++项目的核心是编写CMakeLists.txt并执行“配置→构建”两阶段流程:先用cmake生成构建文件,再用cmake --build调用底层工具编译;支持跨平台、不依赖IDE、可复用。

c++如何使用cmake来构建项目?(入门指南)

用CMake构建C++项目,核心是写好CMakeLists.txt,然后用命令行驱动生成和编译。不依赖IDE、跨平台、可复用——这是它最实在的好处。

准备一个最小可运行的CMake项目

先建个简单结构:

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

在main.cpp里写个“Hello World”;CMakeLists.txt内容如下:

cmake_minimum_required(VERSION 3.10)
project(MyApp)
<p>set(CMAKE_CXX_STANDARD 17)</p><p>add_executable(MyApp main.cpp)

这四行就定义了:最低CMake版本、项目名、C++标准、要生成的可执行文件及源码。

从配置到编译:三步走

打开终端,进入my_project目录后执行:

  • mkdir build && cd build —— 创建独立构建目录(推荐,避免污染源码)
  • cmake .. —— 从上级目录读取CMakeLists.txt,生成本地构建文件(如Unix Makefiles或Visual Studio方案)
  • cmake --build . —— 调用底层构建工具(make、ninja等)完成编译

成功后,build/MyApp(Linux/macOS)或build/MyApp.exe(Windows)就能直接运行。

添加头文件和多源文件支持

如果项目有include/目录和多个.cpp文件,修改CMakeLists.txt:

Android 开发者指南 第一部分:入门 Android 开发者指南 第一部分:入门

Android文档-开发者指南-第一部分:入门-中英文对照版 Android提供了丰富的应用程序框架,它允许您在J*a语言环境中构建移动设备的创新应用程序和游戏。在左侧导航中列出的文档提供了有关如何使用Android的各种API来构建应用程序的详细信息。第一部分:Introduction(入门) 0、Introduction to Android(引进到Android) 1、Application Fundamentals(应用程序基础) 2、Device Compatibility(设备兼容性) 3、

Android 开发者指南 第一部分:入门 11 查看详情 Android 开发者指南 第一部分:入门
include_directories(include)  # 告诉编译器头文件在哪
add_executable(MyApp
    main.cpp
    src/utils.cpp
    src/log.cpp
)

更现代的写法是用target_include_directories(推荐):

add_executable(MyApp main.cpp src/utils.cpp src/log.cpp)
target_include_directories(MyApp PRIVATE include)

PRIVATE表示头路径只用于MyApp本身,不影响它依赖的其他目标。

链接第三方库(以fmt为例)

假设你用vcpkg或手动安装了fmt库:

  • 用find_package(fmt REQUIRED)查找库
  • 用target_link_libraries(MyApp PRIVATE fmt::fmt)链接

完整示例:

find_package(fmt REQUIRED)
add_executable(MyApp main.cpp)
target_link_libraries(MyApp PRIVATE fmt::fmt)

CMake会自动处理头文件路径和链接参数,不用硬编码-I或-lfmt。

基本上就这些。CMake入门不难,关键是理解“配置(cmake)→ 构建(cmake --build)”的两阶段逻辑,以及target_*系列命令如何精准控制每个目标的行为。

以上就是C++如何使用CMake来构建项目?(入门指南)的详细内容,更多请关注其它相关文章!


# windows  # 肇庆律师网站建设  # 标准抖音seo优化要求  # 湖南营销推广规划招聘  # 三亚律师网站推广公司  # 李俊峰网站建设  # 不依赖  # 这是  # 网络编程  # 多路  # 如何实现  # 头文件  # 复用  # 应用程序  # 第一部分  # linux  # 编码  # app  # 工具  # mac  # ai  # unix  # c++  # macos  # win  # cos  # red  # 如何使用  # 胶州获客网站优化案例  # seo排名工具询问27火星  # 营销推广技巧分享  # 洛阳亚马逊网站建设公司  # 甘肃seo服务推荐平台 


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


相关推荐: QQ网页版官方账号登录入口 QQ网页版网页版入口快速导航  J*aScript模拟悬停与点击:自动化网页动态元素交互指南  《杖剑传说》食谱大全  抖音猜你想搜能说明对方搜过吗  如何在Python中安全地将环境变量转换为整数并满足Mypy类型检查  mysql触发器如何编写_mysql触发器编写规范与代码示例讲解  德邦快递会员怎么开通  抖音如何解除|直播|权限绑定_抖音关闭并解绑|直播|功能的方法  Bootstrap 5导航栏折叠功能失效:数据属性迁移指南  PHP页面重载后变量状态保持:实现用户档案连续浏览的教程  电脑从睡眠中被自动唤醒怎么办_Windows唤醒源事件查看与禁用【解决】  酷狗音乐多音轨设置教程  学习通网页版课程打不开_课程无法访问时的解决方法  mysql如何管理数据库账户_mysql数据库账户管理技巧  sublime如何撤销关闭的标签页_sublime重新打开已关闭文件技巧  金牛福袋获取攻略  苹果自助维修计划支持哪些设备机型  J*a列表元素格式化输出教程  Fedora怎么安装 Fedora Workstation安装步骤  Python模块化编程:避免循环导入与共享函数的最佳实践  百度竞价WAP显示PC链接问题  AO3永久镜像入口开放_AO3最新网址兼容所有浏览器  12306夜间购票失败? | 查看官方公布的暂停服务公告与应对方案  如何在CSS中清除浮动解决背景颜色不包裹内容问题_clear after技巧  在PHP环境中正确加载HTML资源:CSS样式与图片路径指南  深入理解Python对象引用与链表属性赋值  《桃源记2》资源采集攻略  OpenWeatherMap API:通过城市名称获取天气预报数据指南  diskgenius分区工具如何设置Bios启动项  抖音网页版官方链接 抖音网页版官网链接入口  优化2xN网格最大路径和的动态规划算法实践  汽水音乐官方网站登录入口_汽水音乐网页版进入链接  《我的恋爱逃生攻略》中文名字输入方法  实时数据流中高效查找最小值与最大值  Python类装饰器动态修改方法时的类型提示:Mypy插件实现精确静态分析  j*a中赋值运算符是什么?  iPhone14无法连接蓝牙设备如何解决  智学网app怎么登录忘记密码_智学网app忘记密码找回与重新登录操作方法  Win10如何彻底关闭OneDrive Win10禁用云同步功能【纯净】  解决Go encoding/json 将JSON大数字解析为浮点数的问题  Safari浏览器自动填表功能失效怎么办 Safari表单管理修复  鲨鱼剧场app金币获取方法  使用Python和GBGB API高效抓取指定日期范围和赛道比赛结果教程  使用VS Code调试Python代码:从入门到精通  cad加载的线型看不见怎么办_cad线型不可见问题解决方法  Python中对象引用与链表属性赋值的机制解析  XPath动态元素定位:如何精准选择文本内容变化的元素  铁拳8在线玩 铁拳8在线秒玩入口  sublime如何处理超大文件不卡顿 _sublime打开大日志文件技巧  Python高效统计字典嵌套列表值在目标列表中的出现次数 

 2025-12-18

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

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

点击免费数据支持

提交您的需求,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.