全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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

用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)

set(CMAKE_CXX_STANDARD 17)

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

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_*系列命令如何精准控制每个目标的行为。


# linux  # windows  # 编码  # app  # 工具  # mac  # ai  # unix  # c++  # macos  # win  # cos  # red  # include  # private  # ide  # visual studio  # 头文件  # 复用  # 这是  # 不依赖  # 就能  # 多个  # 为例  # 再用  # 第三方  # 你用 


相关文章: 建设网站制作价格,怎样建立自己的公司网站?  做企业网站制作流程,企业网站制作基本流程有哪些?  Android滚轮选择时间控件使用详解  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  韩国服务器如何优化跨境访问实现高效连接?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  金*站制作公司有哪些,金华教育集团官网?  建站10G流量真的够用吗?如何应对访问高峰?  宝塔新建站点为何无法访问?如何排查?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  建站之星云端配置指南:模板选择与SEO优化一键生成  如何快速查询网址的建站时间与历史轨迹?  建站主机如何选?高性价比方案全解析  如何在建站之星网店版论坛获取技术支持?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  如何用低价快速搭建高质量网站?  深圳网站制作平台,深圳市做网站好的公司有哪些?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  中山网站制作网页,中山新生登记系统登记流程?  C++如何编写函数模板?(泛型编程入门)  Thinkphp 中 distinct 的用法解析  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  电商网站制作价格怎么算,网上拍卖流程以及规则?  安徽网站建设与外贸建站服务专业定制方案  微课制作网站有哪些,微课网怎么进?  大连网站制作公司哪家好一点,大连买房网站哪个好?  移民网站制作流程,怎么看加拿大移民官网?  如何在香港免费服务器上快速搭建网站?  IOS倒计时设置UIButton标题title的抖动问题  建站之星免费版是否永久可用?  如何用y主机助手快速搭建网站?  建站之星如何实现五合一智能建站与营销推广?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  如何快速搭建FTP站点实现文件共享?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  如何快速辨别茅台真假?关键步骤解析  c# Task.ConfigureAwait(true) 在什么场景下是必须的  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  定制建站策划方案_专业建站与网站建设方案一站式指南  建站之星导航菜单设置与功能模块配置全攻略  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  盐城做公司网站,江苏电子版退休证办理流程?  高端建站三要素:定制模板、企业官网与响应式设计优化  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  网站微信制作软件,如何制作微信链接?  如何在阿里云虚拟主机上快速搭建个人网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。