【C++】Visual Studio+CMake 开发 C++ 入门指南:从环境搭建到项目实战 - 详解

news/2025/10/1 20:06:01/文章来源:https://www.cnblogs.com/yxysuanfa/p/19122788

▒ 目录 ▒

    • 导读
      • 为什么选择VS+CMake?
    • 1️⃣ 环境准备
      • 1.1 安装Visual Studio 2022
      • 1.2 验证CMake安装
    • 2️⃣ 第一个C++项目:Hello World
      • 2.1 创建项目结构
      • 2.2 编写代码文件
        • `src/main.cpp`(程序入口)
        • `CMakeLists.txt`(项目配置核心)
      • 2.3 用VS打开项目
    • 3️⃣ 编译与运行
      • 3.1 选择构建配置
      • 3.2 编译项目
      • 3.3 运行程序
    • 4️⃣ 调试程序
      • 4.1 设置断点
      • 4.2 启动调试
      • 4.3 结束调试
    • 5️⃣ 进阶:多文件项目与库链接
      • 5.1 新增源文件
      • 5.2 更新CMakeLists.txt
      • 5.3 链接系统库(以标准库为例)
    • 6️⃣ 常见问题与解决
    • 总结
    • 参考资料

导读

为什么选择VS+CMake?

Visual Studio(简称VS)是微软推出的集成开发环境(IDE),以强大的调试功能、智能提示和可视化界面著称;CMake是跨平台的构建系统生成工具,通过CMakeLists.txt脚本描述项目结构,自动生成对应平台的构建文件(如VS的.sln、Linux的Makefile)。

两者结合的优势:

本文面向C++初学者,从零开始讲解如何用VS2022+CMake搭建开发环境、创建项目、编译运行及调试,覆盖基础语法与常见问题。

1️⃣ 环境准备

1.1 安装Visual Studio 2022

  1. 下载安装包:从VS官网下载社区版(Community,免费用于个人开发);
  2. 选择组件:安装时必须勾选以下组件(其他组件可选):
    • 工作负载:使用C++的桌面开发
    • 单个组件:CMake工具(在“开发工具”分类下)
    • 单个组件:MSVC v143 - VS 2022 C++ x64/x86 生成工具(确保编译器版本匹配)
  3. 完成安装:点击“安装”,等待进度完成后重启电脑。

1.2 验证CMake安装

VS安装时已捆绑CMake,无需单独下载。验证方法:

  1. 打开VS的“开发者命令提示符”(开始菜单搜索“x64 Native Tools Command Prompt for VS 2022”);

  2. 输入以下命令,若显示版本号则安装成功:

    > cmake --version  # 示例输出:cmake version 3.31.6-msvc6

2️⃣ 第一个C++项目:Hello World

2.1 创建项目结构

  1. 在本地创建项目文件夹(如D:\c01.CppCMakeDemo),并新建以下文件:

    CppCMakeDemo/
    ├─ src/                # 源代码目录
    │  └─ main.cpp         # 主程序文件
    └─ CMakeLists.txt      # CMake配置文件(核心)

2.2 编写代码文件

src/main.cpp(程序入口)
#include <iostream>int main() {// 输出Hello Worldstd::cout << "Hello, VS+CMake!" << std::endl;// 等待用户输入,避免控制台闪退system("pause");return 0;}
CMakeLists.txt(项目配置核心)
# 1. 指定CMake最低版本(需与VS捆绑的CMake版本兼容)
cmake_minimum_required(VERSION 3.20)
# 2. 项目名称(可自定义,对应VS解决方案名)
project(CppCMakeDemo)
# 3. 设置C++标准(如C++17,根据需求调整)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)  # 强制启用指定标准
# 4. 添加源文件(将src目录下的main.cpp添加到项目)
add_executable(${PROJECT_NAME}  # 可执行文件名(与项目名相同)src/main.cpp
)

2.3 用VS打开项目

  1. 打开Visual Studio 2022,点击“打开文件夹”(或菜单栏文件 → 打开 → 文件夹);
  2. 选择项目根目录D:\c01.CppCMakeDemo,VS会自动识别CMakeLists.txt并加载项目;
  3. 首次加载时,VS会在后台生成CMake缓存(底部状态栏显示“配置完成”即成功)。

3️⃣ 编译与运行

3.1 选择构建配置

VS顶部工具栏可切换构建模式:

  • Debug:调试模式(含调试信息,无优化,用于开发);
  • Release:发布模式(无调试信息,有优化,用于最终发布)。
    默认选择x64-Debug(64位调试模式)。

3.2 编译项目

3.3 运行程序

  • 方法1:点击工具栏“本地Windows调试器”(▶️ 图标);

  • 方法2:在VS终端(视图 → 终端)中输入可执行文件路径:

    out\build\x64-Debug\CppCMakeDemo.exe

    运行成功后,控制台会显示Hello, VS+CMake!并暂停等待输入。

4️⃣ 调试程序

VS的调试功能是其核心优势,步骤如下:

4.1 设置断点

main.cpp的代码行左侧点击(或按F9),设置断点(红色圆点):

std::cout << "Hello, VS+CMake!" << std::endl;  // 在这行设置断点

4.2 启动调试

点击工具栏“本地Windows调试器”(或按F5),程序会在断点处暂停,此时可:

  • 查看变量:通过“自动窗口”“局部变量”窗口观察变量值;
  • 单步执行:
    • F10:单步跳过(不进入函数内部);
    • F11:单步执行(进入函数内部);
    • Shift+F11:跳出当前函数;
  • 监视表达式:在“监视”窗口输入变量或表达式(如std::cout),实时查看值。
    在这里插入图片描述

4.3 结束调试

Shift+F5停止调试,或点击调试工具栏的“停止”按钮。

5️⃣ 进阶:多文件项目与库链接

实际开发中项目会包含多个源文件和库,以下示例扩展项目结构:

5.1 新增源文件

创建src/math_utils.cppsrc/math_utils.h(自定义数学工具库):

// src/math_utils.h
#ifndef MATH_UTILS_H
#define MATH_UTILS_H
// 加法函数声明
int add(int a, int b);
#endif  // MATH_UTILS_H
// src/math_utils.cpp
#include "math_utils.h"
// 加法函数实现
int add(int a, int b) {
return a + b;
}

修改src/main.cpp调用自定义函数:

#include <iostream>#include "math_utils.h"  // 引入自定义头文件int main() {int result = add(2, 3);std::cout << "2 + 3 = " << result << std::endl;  // 输出:2 + 3 = 5system("pause");return 0;}

5.2 更新CMakeLists.txt

添加新源文件到项目:

cmake_minimum_required(VERSION 3.20)
project(CppCMakeDemo)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 添加所有源文件(main.cpp和math_utils.cpp)
add_executable(${PROJECT_NAME}src/main.cppsrc/math_utils.cpp  # 新增源文件src/math_utils.h    # 头文件可选,添加后在VS中可见
)

5.3 链接系统库(以标准库为例)

若需使用系统库(如OpenGLBoost),通过target_link_libraries链接。例如链接标准数学库(Windows无需手动链接,Linux需添加m库):

# 在add_executable后添加
if(UNIX)target_link_libraries(${PROJECT_NAME} m)  # Linux链接数学库
endif()

6️⃣ 常见问题与解决

问题现象可能原因解决方法
提示“找不到CMakeLists.txt”未打开项目根目录确保VS打开的是包含CMakeLists.txt的文件夹
编译报错“无法打开源文件xxx.h”头文件路径错误CMakeLists.txt中通过include_directories(src)添加头文件目录
调试时控制台闪退程序执行完毕自动退出system("pause")或在调试配置中勾选“调试停止时自动关闭控制台”
CMake配置失败CMake版本不兼容降低cmake_minimum_required版本(如改为3.xx)
多文件编译冲突头文件未加防重复包含在头文件中添加#ifndef/#define/#endif保护(如5.1中的math_utils.h

总结

本文通过一个简单项目演示了VS+CMake开发C++的完整流程:

  1. 环境准备:安装VS2022并勾选CMake组件;
  2. 项目创建:编写main.cppCMakeLists.txt,用VS打开文件夹;
  3. 编译运行:通过VS工具栏或快捷键生成并执行程序;
  4. 调试:利用VS强大的断点和单步调试功能;
  5. 进阶:扩展多文件项目并链接库。

掌握这套工具链后,可轻松应对从简单程序到大型项目的开发需求。后续可深入学习CMake语法(如条件判断、循环、自定义编译选项)和VS的高级功能(如性能分析、单元测试)。

参考资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/924226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习:uniapp全栈微信小程序vue3后台-额外/精彩报错篇 - 教程

学习:uniapp全栈微信小程序vue3后台-额外/精彩报错篇 - 教程2025-10-01 20:04 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !import…

织梦配置手机网站手机企业网站怎么做

0x01 初识NTLM协议 基本概念&#xff1a;NTLM(NT LAN Manager)认证是一种早期的Windows网络身份认证协议。它在Windows系统中用于验证用户的身份&#xff0c;并提供对网络资源的访问控制&#xff0c;它是一种基于Challenge/Response的认证机制。 认证流程 NTLM协议Challenge…

关于滚动数组

i & 1 还是太丑陋了,可以设一个 ind,每次 i++ 时 ind = 1 - ind。 i + 1 就是 1 - ind。

第九篇

今天是10月1日,ok也是终于等到了国庆节放假,不容易啊,坐了十几个小时的火车终于是顺利到家了。

2025 年宁波搬家公司推荐 TOP 权威榜单发布,多维度解读宁波搬家服务公司创新亮点举措

引言 在宁波这座不断发展的城市,搬家服务需求日益增长,但行业内却存在不少亟待解决的问题。部分小型搬家团队缺乏规范管理,服务质量参差不齐,常常出现物品损坏后推诿责任、坐地起价等现象,让消费者蒙受损失。有的…

2025 年检测器厂家推荐 TOP 品牌权威排名,防爆火焰 / 一体化火焰 / 紫外线火焰 / 离子火焰 / 红外线火焰 / 红紫外复合火焰 / 智能火焰检测器公司推荐

引言 在工业生产、能源供应、环境保护等众多领域,检测器作为关键的监测设备,其性能与质量直接关系到生产安全、效率及数据准确性。当前,检测器市场品牌众多,产品种类繁杂,技术水平参差不齐。部分厂家为追求短期利…

【Git】Git 操作指令大全及运用场景详解

【Git】Git 操作指令大全及运用场景详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

网站建设的目的和作用网店推广软文范例

摘要&#xff1a;本文整理自字节跳动基础架构工程师李国君&#xff0c;在 Streaming Lakehouse Meetup 的分享。幸福里业务是一种典型的交易、事务类型的业务场景&#xff0c;这种业务场景在实时数仓建模中遇到了诸多挑战。本次分享主要介绍幸福里业务基于 Flink & Paimon …

9-29

(1)今天预习了java的课程 (2)明天继续深造

10-1

(1)今天预习了java的课程 (2)明天继续深造

百度如何提交网站做网站建设推荐

概述 一种开源跨平台的序列化结构化数据的协议。可用于存储数据或在网络上进行数据通信。它提供了用于描述数据结构的接口描述语言&#xff08;IDL&#xff09;&#xff0c;也提供了根据 IDL 产生代码的程序工具。Protocol Buffers的设计目标是简单和性能&#xff0c;所以与 XM…

网上商城网站建设体会青海百度关键词seo

虚拟现实&#xff08;VR&#xff09;技术的出现为我们提供了一种全新的在线教学方式。由广州华锐视点开发的VR线上教学资源平台&#xff0c;作为一个综合性的学习工具&#xff0c;正在教育领域迅速发展&#xff0c;并被越来越多的教育机构和学生所接受。那么&#xff0c;VR线上…

做网站需要几个服务器wordpress网站域名服务器

技术背景 随着智慧数字人、AI数字人的兴起&#xff0c;越来越多的公司着手构建​全息、真实感数字角色等技术合成的数字仿真人虚拟形象&#xff0c;通过“虚拟形象语音交互&#xff08;T-T-S、ASR&#xff09;自然语言理解&#xff08;NLU&#xff09;深度学习”&#xff0c;构…

2025母线槽源头厂家 TOP 工厂权威榜单揭晓,密集型、封闭、浇筑、耐火、防火、防水、插接式母线槽公司推荐!

引言母线槽作为电力系统中重要的输电设备,其质量与性能直接关系到电力传输的安全与稳定。当前,母线槽市场规模不断扩大,但行业内也存在诸多问题。部分源头厂家缺乏规范的生产标准,为降低成本使用劣质材料,导致产品…

2025 年衬氟鹤管源头厂家 TOP 企业品牌推荐排行榜,天然气 / 低温 / LNG / 撬装 / 底装 / 火车 / 装卸车 / 上装 / 衬氟 / 下装鹤管公司推荐这 10 家

在化工、医药等行业的液体储运与装卸环节,衬氟鹤管扮演着至关重要的角色。其因具备出色的耐腐蚀性能,成为输送腐蚀性液体介质的关键设备。然而,当前市场上衬氟鹤管产品质量参差不齐,部分厂家为追求成本效益,在材料…

2025 铜覆钢圆钢生产商厂家 TOP 企业品牌推荐榜单,铜覆钢接地极 / 棒 / 圆钢 / 扁钢 / 圆线 / 绞线 / 角钢 / 扁铁 / 管公司推荐这 10 家

引言在当今的电力、石油化工、通讯等众多领域,铜覆钢圆钢作为重要的接地材料,其质量与性能直接关系到相关工程的安全与稳定。然而,当前铜覆钢圆钢行业却面临着诸多问题。市场上产品质量参差不齐,部分生产商为追求利…

2025 年喷雾干燥机厂家 TOP 企业品牌推荐排行榜,无锡 / 常州喷雾干燥机 / 离心式 / 压力式 / 气流 / 造粒 / 有机溶剂 / 闭路循环 / 闭式循环 / 实验喷雾干燥机公司推荐!

引言当前喷雾干燥机行业在发展过程中面临诸多问题,一方面,随着精密陶瓷、半导体材料、新能源粉体等高端材料制造领域需求不断提升,对喷雾干燥机的精度、稳定性以及能耗等方面提出了更高要求,然而部分厂家因技术积累…

医院网站建设台账郑州厉害的seo顾问公司

1、99 公益日活动加速任务已全部完成适配&#xff0c;空间公益说说和评论并分享小世界内容任务在已有的功能上进行挂机&#xff0c; 其中【发小世界】功能暂时更名为【公益小世界】。 2、上线新功能【公益答题】用于完成参加 Qbox 公益答题任务&#xff0c;等级套装有任意一项…

2025 年工业吊扇最新推荐权威排行榜:TOP5 优质品牌全面解析,助力企业高效选购

在工业生产场景中,工业吊扇是调节大型空间通风、改善作业环境的核心设备,广泛应用于厂房、仓库、物流中心等场所。但当前市场品牌繁杂,部分产品存在能耗偏高、运行稳定性差、安全防护不到位等问题,且不同品牌在技术…

实用指南:HTTPS协议原理

实用指南:HTTPS协议原理2025-10-01 19:36 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fo…