【VSCode】【msys2】VS Code + msys2配置Windows下C/C++开发环境_msys2 vscode_伐尘的博客-程序员秘密

技术标签: C++  # VSCode  c语言  vscode  windows  

【VSCode】【msys2】VS Code + msys2配置Windows下C/C++开发环境

一、Msys2配置

1. 下载msys2, 网址:https://www.msys2.org/

2. 安装msys2-x86_64-xxxx.exe

这里没什难度,记住安装路径就好,一路next就装好了。

3. 安装gcc

3.1. 更新msys2

> pacman -Sy

3.2. 安装gcc

> pacman -Su gcc

出现"Proceed with installation? [Y/n]" 输入y回车就行。

同样的方法可以安装cmake,不赘述。

3.3. 测试

> gcc -v

输出gcc版本信息就时安装成功

二、下载安装VSCode

1. 下载安装VSCode,网址:https://code.visualstudio.com/

安装VSCode,勾选 ”将通过vscode打开操作添加到windows资源管理器目录上下文菜单“

2. 打开VSCode,安装c++插件,选第一个就行,其他的按需安装。

在这里插入图片描述

三、配置开发环境

1. 创建一个开发目录,如cpptest, 右键用vscode打开。

2. 新建一个code文件,hello.c

3. 输入代码

#include<stdio.h>

int main()
{
    
    printf("hello world\n");

    return 0;
}    

4. 在VSCode控制台中编译运行

4.1 输入gcc hello.c

> gcc hello.c

4.2 输入a.exe看到输出结果 hello world

> a.exe
> hello world 

5. 这时候鼠标右键打开stdio.h文件时,会发现这个文件竟然时Visual Studio下的,不是gcc下的。

在这里插入图片描述

原因是VSCode做代码分析的时候不知道gcc,选择了MSVC,添加配置文件把编译器改为gcc.

细节参考vscode官网:Get Started with C++ and Mingw-w64 in Visual Studio Code.

在.vscode目录下新建一个json文件:c_cpp_properties.json,注意includePath和compilerPath要指定到msys2安装目录下。

// .vscode/c_cpp_properties.json
{
    
    "configurations": [
      {
    
        "name": "GCC",
        "includePath": [
            "C:/ProgramFiles/msys64/usr/include",
            "${workspaceFolder}/**"
        ],
        "defines": ["_DEBUG", "UNICODE", "_UNICODE"],
        "compilerPath": "C:/ProgramFiles/msys64/usr/bin/gcc.exe",
        "cStandard": "c17",
        "cppStandard": "c++17",
        "intelliSenseMode": "linux-gcc-x64"
      }
    ],
    "version": 4
}

在这里插入图片描述

这时候鼠标右键打开stdio.h文件时,就是是gcc下的。

Last But Not Least

还有个问题,就是VSCode显示#include <stdio.h>这一行有错,鼠标移上去显式找不到依赖文件stddef.h
在这里插入图片描述

用everything找一下发现stddef.h在另一个目录下
在这里插入图片描述

把这个目录也添加到c_cpp_properties.json的includePath中,问题解决。
在这里插入图片描述
在这里插入图片描述

C++还需要添加

 "C:/ProgramFiles/msys64/usr/lib/gcc/x86_64-pc-msys/11.2.0/include/c++", 
 "C:/ProgramFiles/msys64/usr/lib/gcc/x86_64-pc-msys/11.2.0/include/c++/x86_64-pc-msys",

愉快的coding!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43331089/article/details/127910399

智能推荐

struct和class的区别 观察者模式 https连接 点击button收到点击事件,中间发生了什么_Lu_Ca的博客-程序员秘密

问题:4道过滤菜鸟的iOS面试题 网上已经有很多针对各种知识点的面试题,面试时有些人未必真正理解也能通过背题看上去很懂。我自己总结了4道面试题,好快速的判断这个人是否是一个合格的工程师,欢迎大家点评。1.struct和class的区别在面试之前你觉得所有的计算机专业的学生都应该能答的上来,事实是我面的人里有超过三分一没有答上来。有

matlab doa估计,基于经典MUSICDOA估计Matlab仿真.doc_酷酷猫先辈的博客-程序员秘密

基于经典MUSICDOA估计Matlab仿真.doc信息与通信工程学院阵列信号处理实验报告(基于经典MUSIC的DOA估计atlab仿真)专 业:XXXXXX学生姓名:XXX任课教师:XXX2015年X月题目:基于经典MUSIC的DOA估计atlab仿真。因导向矩阵的各矢量与噪声子空间正交,可得到阵列空间谱函数使变化,按照来搜索峰值来达到波达方向的估计值。实验内容与结果:实验使用8阵元均匀线...

算时间(可借位)_分钟借位c语言怎么表示_宇宙超级无敌狂拽霹雳魔法暴龙战神的博客-程序员秘密

方法1:全部转换为分钟#include&lt;bits/stdc++.h&gt;using namespace std;int main(){ int a,b,c,d,e,f; int delta; cin &gt;&gt; a &gt;&gt; b &gt;&gt; c &gt;&gt; d; delta = ((c - a)*60 + d - b); e = delta / 60; f = delta % 60; cout...

VC++ 字符串操作学习总结_dkopg24406的博客-程序员秘密

vc++中各种字符串(转载)http://www.cnblogs.com/tomin/archive/2008/12/28/1364097.htmlCString ,BSTR ,LPCTSTR之间关系和区别CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。CString 是一个完全独立的类,...

Reactor5.0源代码混淆器_reactor 工具混编操作_treeMountain的博客-程序员秘密

net reactor加密源码保软件安全-net reactor使用教程用工具加密不能绝对确保软件安全,却能阻大多数人破解出软件的源代码,在一定程序上确保软件安全。  Eziriz .NET Reactor 的主要功能包括:NecroBit IL(转为非托管代码)、反 ILDASM(反编译器)、混淆代码、合并、压缩源码、支持命令行等,支持所有 .NET 框架和几乎所有开发语言,如 C#、C

IIC协议详解_Sup_lz的博客-程序员秘密

IIC(Inter-Integrated Circuit)总线是一种由 NXP(原 PHILIPS)公司开发的两线式串行总线, 用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合 使用,传输距离短,任意时刻只能有一个主机等特性。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。PS: 这里要注意 IIC 是为了与低速设备通信而发明的,所以 IIC 的传输速率比不上 SPI。图1 IIC总线物理拓扑图。

随便推点

JS奇淫技巧:挑战前端黑科技,数值的七种写法,能全看懂的一定是高手_w2sfot的博客-程序员秘密

JS奇淫技巧:数值的七种写法JS奇淫技巧:挑战前端黑科技,数值的七种写法,能全看懂的一定是高手你知道吗?在JS编程中,数值可以有很多种写法。

字符型(char)数组分配内存时占用多少个字节_char数组占几个字节_OnlyFamiU的博客-程序员秘密

1.直接定义的字符串会占用2.结构体中字符型(char)数组在分配内存时会多分配3个字节示例及运行结果如下#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;struct student{ long no; char sex; char name[20]; int age; float score; struct student *next;};struct student11{ long no; char sex; char

Java生成多个pdf文件,压缩包zip下载_绿林寻猫的博客-程序员秘密

@RequestMapping(value = "/downloadIDCardPDF", method = RequestMethod.GET) public void downloadIDCardPDF(String ids, HttpServletResponse response) throws Exception { //工人进场合同模板 ...

PostgreSQL 语句调优_postgres group by 优化_疯狂小草的博客-程序员秘密

作为一名合格的码农,对于Sql优化的认识是很有必要的。

zju-pat 1008.Elevator_Matrix_Reloaded的博客-程序员秘密

#include#includeusing namespace std;int n;int a[105];void run(){ int i; for(i=0;i<n;i++) scanf("%d",&a[i]); int ans=0; int cur=0; for(i=0;i<n;i++) { if(a[i]>cur) { ans=ans+(a

SpringBoot2.0日志配置实例_码农StayUp的博客-程序员秘密

SpringBoot使用Commons Logging进行所有内部日志记录,但底层日志实现保持开放状态。为Java Util Logging,Log4j2和Logback提供了默认配置。SpringBoot能自动适配所有的日志,本次讲解slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉;SpringBoot默认帮我们配置好了日志,我们直接即可。

推荐文章

热门文章

相关标签