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,中文版由国内大佬翻译完成,原下载地址可能打不开,我将它传到了百度网盘上

祝大家学有所成!🤗🤗🤗

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

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

相关文章

【计算机网络】网络原理

目录 1.网络的发展 2.协议 3.OSI七层网络模型 4.TCP/IP五层网络模型及作用 5.经典面试题 6.封装和分用 发送方(封装) 接收方(分用) 1.网络的发展 路由器:路由指的是最佳路径的选择。一般家用的是5个网口,1个WAN口4个LAN口(口:端口)。可…

如何修改运行中的docker容器的端口映射

一、必须先关闭docker服务 systemctl stop docker二、修改容器的hostconfig.json 文件 路径:vim /var/lib/docker/containers/容器id/hostconfig.json 修改 PortBindings 属性,如下图: 然后保存 三、修改config.v2.json 文件 路径&#…

[机缘参悟-110] :一个IT人对面具的理解:职业面具戴久了,就会忘记原本真实的自己,一个人是忠于职位,还是忠于内心?

目录 一、职业面具戴久了,就会忘记原本真实的自己 二、霸王别姬 三、没有对错,各走各路 3.1 程蝶衣:戏里戏外,忠于角色 3.2 段小楼:戏里戏外,角色分明 3.3 没有对错,各走各路 四、职场中…

Linux文件管理与用户管理

一、查看文件内容 1、回顾之前的命令 cat命令、tac命令、head命令、tail命令、扩展:tail -f动态查看一个文件的内容 2、more分屏显示文件内容(了解) 基本语法: # more 文件名称 特别注意:more命令在加载文件时并不…

本地安装telepresence,访问K8S集群 Mac(m1) 非管理員

kubeconfig 一.安装telepresence 1.安装 Telepresence Quickstart | Telepresence (1)brew install datawire/blackbird/telepresence 2.配置 目录kubectl 将使用默认的 kubeconfig 文件:$HOME/.kube/config 创建文件夹&…

分享一个比对图片是否一致的小工具(来源: github)

运行效果图: 官网: GitHub - codingfishman/image-diff: 一个方便的图片对比工具一个方便的图片对比工具. Contribute to codingfishman/image-diff development by creating an account on GitHub.https://github.com/codingfishman/image-diff 优缺点: 1.采用比对各色块是…

idea 里 没有svn选项的处理办法

总结一下没有svn选项的几种情况: 情况1:IntelliJ IDEA打开带SVN信息的项目不显示SVN信息,项目右键SVN以及图标还有Changes都不显示解决方法 在VCS菜单中有个开关,叫Enabled Version Control Integration,在打开的窗口…

ZY Player:影视爱好者的万能播放器

如果你是一位影视爱好者,一定有过为寻找一款支持各种影视资源、能解析VIP权限的播放器而头疼的经历。今天,我要为大家介绍一款被称为万能影视资源播放器的ZY Player,它由网友Hiram-Wong二次开发,并且是开源免费的 导航 强大的影视…

基于Java的旅游网站系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

数据模型设计必读方法论!很实用

数据架构的重要构件之一是数据模型,当然从数据架构的视角来说的数据模型是指企业级数据模型。本篇文章更多是讨论如何设计和管理数据模型,此处的数据模型是泛指在组织中通过数据建模的过程,来发现、分析和确定数据需求范围,并用于…

分享Java NET Python三大技术下AutojsPro7云控代码

引言 有图有真相,那短视频就更是真相了。下面是三大语言的短视频。 Java源码版云控示例: Java源码版云控示例在线视频 Net源码版云控示例: Net源码版云控示例在线视频亚丁号-知识付费平台 支付后可见 扫码付费可见 Python源码版云控示例&…

彻底理解操作系统与内核的区别!

通用底盘技术 Canoo公司有一项核心技术专利,这就是它们的通用电动底盘技术,长得是这个样子,非常像一个滑板: 这个带轮子、有电池、能动的滑板已经包含了一辆车最核心的组件,差的就是一个外壳。这个看起来像滑板的东西…

基于SpringBoot的大学生体质测试管理系统

基于SpringBoot的大学生体质测试管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 管理员界面 教师界面 学生界面 摘要 大学生体质测试管理系统是一…

Flink的ResourceManager详解(一)

ResourceManager 总结 一、概述 1、ResourceManager 管理 Flink 集群中的计算资源,计算资源主要来自 TaskManager 组件。 2、如果集群采用 Native【本地模式】部署,则 ResourceManager 会动态地向集群资源管理器申请 Container 并启动TaskManager&…

python+django医患档案电子病历管理系统7ld2o

本课题使用Python语言进行开发。代码层面的操作主要在PyCharm中进行,将系统所使用到的表以及数据存储到MySQL数据库中,方便对数据进行操作本课题基于WEB的开发平台 1.运行环境:python3.7/python3.8。 2.IDE环境:pycharmmysql5.7; …

ArcGIS笔记5_生成栅格文件时保存报错怎么办

本文目录 前言Step 1 直接保存到指定文件夹会报错Step 2 先保存到默认位置再数据导出到指定文件夹 前言 有时生成栅格文件时,保存在自定义指定的文件夹内会提示出错,而保存到默认位置则没有问题。因此可以通过先保存到默认位置,再数据导出到…

linux进程间通讯--信号量

1.认识信号量 方便理解:信号量就是一个计数器。当它大于0能用,小于等于0,用不了,这个值自己给。 2.特点: 信号量用于进程间同步,若要在进程间传递数据需要结合共享内存。信号量基于操作系统的 PV 操作&am…

家居行业如何打破获客困局?2023重庆建博会现场,智哪儿AI营销第一课给出了答案

10月12日-14日,2023中国(重庆)建筑及装饰材料博览会(简称:2023中国重庆建博会)正在重庆国际博览中心如火如荼地进行。「智哪儿」携手2023中国重庆建博会主办方共同主办的《2023家居行业AI营销第一课&#x…

【vscode编辑器插件】前端 php unity自用插件分享

文章目录 一篇一句前言前端vuegitphpunity后端其他待续完结 一篇一句 “思考是最困难的工作,这也许是为什么很少有人这样做。” - 亨利福特(Henry Ford) 前言 无论是什么语言,我都会选择使用vscode进行开发,我愿称v…

4K壁纸小程序源码 全内容自动采集

全内容自动采集 4K壁纸小程序源码,带流量主。用的都是一个接口,不过这个不知是谁改的,成了LSP版,是真色啊,专搜小姐姐。 4K壁纸,静态壁纸,头像等都有保留,界面广告位很多&#xff0c…