服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - VSCode IDE 配置环境过程解析

VSCode IDE 配置环境过程解析

2022-09-28 18:17Milton C/C++

这篇文章主要介绍了VSCode IDE 环境配置,这里说的是仅使用 VSCode 创建C/CPP项目时的配置,VSCode 有代码提示, 定位来源和各种快捷键, 更适合日常编码工作,需要的朋友可以参考下

如果用 PlatformIO 创建 libopencm3 项目可以做到零配置, 只是 libopencm3 的版本会旧一点. 这里说的是仅使用 VSCode 创建C/CPP项目时的配置. VSCode 有代码提示, 定位来源和各种快捷键, 更适合日常编码工作.

说明

因为 PlatformIO 的 platform:st-stm32 自带 libopencm3, 如果用 PlatformIO 创建 libopencm3 项目可以做到零配置, 只是 libopencm3 的版本会旧一点. 这里说的是仅使用 VSCode 创建C/CPP项目时的配置. VSCode 有代码提示, 定位来源和各种快捷键, 更适合日常编码工作.

前提条件

参考如何linux环境下配置环境变量过程图解  ,自行百度先将 GNU Arm Embedded Toolchain 和 st-flash 工具准备好

创建项目

导出模板项目

?
1
2
3
git clone --recurse-submodules https://github.com/libopencm3/libopencm3-template.git
或者
git clone --recurse-submodules https://gitee.com/iosetting/libopencm3-template.git

VSCode 创建项目

用 VSCode 的 Open Folder 打开. 需要修改一下 my-project/Makefile 中的配置, 将 DEVICE 修改为实际使用的MCU型号

?
1
DEVICE=stm32f103c8t6

配置C/CPP环境

快捷键Ctrl+Shift+P, 在打开的对话框中, 输入/找到 C/C++: Edit Configurations (JSON), 用JSON进行配置

配置内容

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "${workspaceFolder}/libopencm3/include"
            ],
            "defines": [
                "STM32F1"
            ],
            "compilerPath": "/opt/gcc-arm/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gcc",
            "cStandard": "gnu11",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "gcc-arm"
        }
    ],
    "version": 4
}
  1. compilerPath 根据自己的工具链路径进行修改
  2. defines 下的 STM32F1 与编译无关(编译使用的是DEVICE和链接库), 不设置也能正确编译, 设置这个是为了 VSCode 能正确定位变量和函数声明

配置编译任务

快捷键Ctrl+Shift+P, 在打开的对话框中, 输入/找到 Tasks: Configure Task, 用others模板创建

配置内容, 其中TARGETS=stm32/f1根据实际的MCU型号修改

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build libopencm3",
            "type": "shell",
            "command": "PREFIX=/opt/gcc-arm/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi- TARGETS=stm32/f1 make -C libopencm3",
            "problemMatcher": []
        },
        {
            "label": "build clean libopencm3",
            "type": "shell",
            "command": "PREFIX=/opt/gcc-arm/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi- make -C libopencm3 clean",
            "problemMatcher": []
        },
        {
            "label": "build",
            "type": "shell",
            "command": "PREFIX=/opt/gcc-arm/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi- make -C my-project",
            "problemMatcher": []
        },
        {
            "label": "build clean",
            "type": "shell",
            "command": "PREFIX=/opt/gcc-arm/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi- make -C my-project clean",
            "problemMatcher": []
        },
        {
            "label": "build download",
            "type": "shell",
            "command": "st-flash --reset write my-project/awesomesauce.bin 0x8000000",
            "problemMatcher": []
        }
    ]
}

使用时, 通过Shift + Alt + F10调出菜单并选中执行.

先执行一次 build libopencm3 , 生成 libopencm3 的链接库之后, 编译项目就只需要执行 build 了.

到此这篇关于VSCode IDE 环境配置的文章就介绍到这了,更多相关VSCode IDE 环境配置内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/milton/p/15929905.html

延伸 · 阅读

精彩推荐
  • C/C++深入了解C语言中的const和指针

    深入了解C语言中的const和指针

    这篇文章将具体为大家介绍一下C语言中const和指针的使用,文中的示例代码讲解详细,对我们学习const和指针有一定帮助,需要的可以参考一下...

    叫我小秦就好了5562022-09-24
  • C/C++C语言实现通用数据结构之通用椎栈

    C语言实现通用数据结构之通用椎栈

    这篇文章主要为大家详细介绍了C语言实现通用数据结构之通用椎栈,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    swwlqw6702022-03-05
  • C/C++C语言、C++中的union用法总结

    C语言、C++中的union用法总结

    这篇文章主要介绍了C语言、C++中的union用法总结,本文讲解了什么是union、C中使用union、当union遇到对象等内容,需要的朋友可以参考下...

    果冻想8922021-02-05
  • C/C++利用C++实现最长公共子序列与最长公共子串

    利用C++实现最长公共子序列与最长公共子串

    这篇文章主要给大家介绍了如何利用C++实现最长公共子序列与最长公共子串,文章一开始就给大家简单的介绍了什么是子序列,子串应该比较好理解就不用...

    Treant4132021-04-21
  • C/C++C语言俄罗斯方块游戏课程设计

    C语言俄罗斯方块游戏课程设计

    这篇文章主要为大家详细介绍了C语言俄罗斯方块游戏课程设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    C语言教程网6672021-11-16
  • C/C++关于VS+QT5应用程序换图标的解决方案

    关于VS+QT5应用程序换图标的解决方案

    这篇文章主要介绍了VS+QT5应用程序换图标的处理方案,本文给大家提供了两种解决方案供大家参考,每种方法给大家讲解的都非常详细,需要的朋友可以参考...

    手磨咖啡8212022-07-24
  • C/C++C++输入输出操作符重载的深入分析

    C++输入输出操作符重载的深入分析

    本篇文章是对C++输入输出操作符重载进行了详细的分析介绍,需要的朋友参考下...

    C++教程网3082020-12-13
  • C/C++C++ 11实现检查是否存在特定的成员函数

    C++ 11实现检查是否存在特定的成员函数

    C++11/14相比以往的C++98/03在很多方面做了简化和增强,尤其是在泛型编程方面,让C++的泛型编程的威力变得更加强大,下面这篇文章主要介绍了利用C++ 11实现...

    daisy7612021-05-03