C语言初学者工具选择:vscode + MSYS2 + cmake 搭建 C环境

2023-10-19 08:28

本文主要是介绍C语言初学者工具选择:vscode + MSYS2 + cmake 搭建 C环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 前言
    • 1. MSYS2 安装
      • 1. 下载安装包
      • 2. 安装
      • 3. pacman 换清华大学源
      • 4. 安装 mingw-w64 toolchain 和 cmake + ninja
      • 5. 将 toolchain 加入系统环境变量
    • 2. 设置 vscode
      • 1. 必要的插件
      • 2. 一个简单的 vscode cmake 项目
    • 最后
      • C
      • 数据结构与算法
      • CMake

前言

网上关于使用 vscode 配置 C 环境的博文非常多,但大多数都是使用 vscode 的 code runner 插件来运行,创建 tasks.json 和 lunch.json 来执行调试任务,比如:vscode配置C语言环境,VScode搭建C/C++开发环境。这种方式相当麻烦,各种路径啊环境变量啊要修改,而且这种方式只适合单个 C 文件。我初学 C 的时候,使用的也是这样的方式,好一番折腾,最近我看到了一篇使用 MSYS2 + cmake 搭建 vscode C 环境的好文,地址在这里:给萌新的C/C++环境搭建攻略(VSCode和MSYS2) 。文章非常详细,但是关于 vscode 使用 cmake tools 插件的部分没有具体描述,我在此做个补充。

1. MSYS2 安装

1. 下载安装包

  • 官网安装地址(可能上不去)
    MSYS2官网

  • 清华大学开源软件镜像站 | MSYS2(推荐)
    清华大学开源软件镜像站

2. 安装

安装过程很简单,一路 next 即可
MSYS2安装

3. pacman 换清华大学源

pacman 是MSYS2 的包管理器,可以通过它安装各类工具和第三方库
打开 MSYS2 命令行(msys2.exe,位于MSTYS2 目录的根目录下),默认的源在国内访问可能很慢,建议换成清华大学的源,输入sed -i "s#https\?://mirror.msys2.org/#https://mirrors.tuna.tsinghua.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist* 再按回车即可。

4. 安装 mingw-w64 toolchain 和 cmake + ninja

  • mingw-w64 toolchain
    打开 MSYS2 命令行,输入pacman -Syu 同步更新所有工具,然后输入pacman -S mingw-w64-ucrt-x86_64-toolchain 安装 mingw-w64 工具链。中间出现询问之类的一路回车就好,等待一段时间后应该就安装完毕了。
    ucrt64
    安装
  • cmake + ninja
    将指令改为pacman -S mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-ninja,其余同上

5. 将 toolchain 加入系统环境变量

添加环境变量的目的是使得 toolchain 能在计算机的各个位置被直接访问到。

顺序:设置->系统->系统信息->高级系统设置
高级
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
完成后在 windows 终端中(win + X,选择windows 终端)输入gcc --versioncmake --version,出现下图内容说明设置成功
在这里插入图片描述

2. 设置 vscode

1. 必要的插件

  • C/C++
  • cmake
  • cmake tools
    需要设置 cmake tools 插件,打开vscode 设置,输入@ext:ms-vscode.cmake-tools,下滑至下图位置,加入 cmake.exe 的路径
    在这里插入图片描述

2. 一个简单的 vscode cmake 项目

  1. ctrl + shfit + P 打开命令面板,输入 cmake: quick start 并选择
    在这里插入图片描述
  2. 提示输入项目名称,随便写一个就好了
    在这里插入图片描述选择项目模板,C 项目就选第二个
    在这里插入图片描述选择项目类型,运行单个 C 文件的项目就选第二个
    在这里插入图片描述
  3. 完成上面的步骤后会生成一个项目模板
    在这里插入图片描述
  • CMakeList.txt

    # 运行项目所需的 cmake 的最低版本,3.0.0 过低引发了报错,建议改为3.22.0
    cmake_minimum_required(VERSION 3.0.0)	
    # 设置项目名,版本号,所用语言
    project(cmake_beginning VERSION 0.1.0 LANGUAGES C)# 测试,这两行可以删去
    # include(CTest)
    # enable_testing()# 由源文件生成可执行文件
    add_executable(cmake_beginning main.c)# 打包,这三行可以删去
    # set(CPACK_PROJECT_NAME ${PROJECT_NAME})
    # set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
    # include(CPack)
    

    修改后的版本如下:

    cmake_minimum_required(VERSION 3.22.0)project(cmake_beginning VERSION 0.1.0 LANGUAGES C)add_executable(cmake_beginning main.c)
    
  1. 编译,运行,调试
  • 编译,点击最下方的 build(准确说是构建整个项目)
    在这里插入图片描述
    在这里插入图片描述

  • 运行
    在这里插入图片描述
    在这里插入图片描述

  • 调试
    在这里插入图片描述
    在这里插入图片描述

  1. 想要添加其他源文件的话,直接在 CMakeList.txt 中添加即可,格式:add_executable(可执行文件名 源文件名),注意不要和已有的文件同名,如:
    在这里插入图片描述

最后

这里给出一些 C 相关的书籍

C

  • 入门:《C 语言程序设计:现代方法》
  • 进阶
    • 《C 和指针》
    • 《C 专家编程》
    • 《C 陷阱与缺陷》
    • 《深入理解 C 指针》

数据结构与算法

  • 《算法精解:C 语言描述》,这本书给出了完整的代码,非常推荐!下载地址
  • 《数据结构与算法:C 语言描述》

CMake

  • 《Cmake Cookbook》,这本书非常适合入门 cmake,中文版由国内大佬翻译完成,原下载地址可能打不开,我将它传到了百度网盘上

祝大家学有所成!🤗🤗🤗

这篇关于C语言初学者工具选择:vscode + MSYS2 + cmake 搭建 C环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/238591

相关文章

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化