跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Blogs
  3. vscode如何配置C/C++环境,支持函数跳转和自动补全

vscode如何配置C/C++环境,支持函数跳转和自动补全

已定时 已固定 已锁定 已移动 Blogs
vscode
5 帖子 4 发布者 1.6k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • FrankieF 离线
    FrankieF 离线
    Frankie YunTu
    写于 最后由 编辑
    #1

    YUNTU所有的VSCODE工程编译都是基于CMake来实现的,所有可以很容易的被各个IDE/插件识别
    VSCODE的C/C++插件可以用以下两种(任选其一即可),建议选择ClangD😊

    clangd 插件

    41139ef3-b595-4e41-ae1d-360f9afc92a5-image.png

    安装

    安装clangd,vscode会默认下载clangd-server,或者可以手动选择clangd的目录
    53809405-9493-4bd0-a126-5a88c7b9e31c-image.png

    配置

    clangd的配置是每个workspace下的*.code-workspace文件里单独配置

    {
        "folders": [
            {
                "path": "."
            }
        ],
        "settings": {
            "clangd.arguments": [
                "--compile-commands-dir=${workspaceFolder}/build",
                "--query-driver=${env:APPDATA}/yt_config_tool/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gcc.exe"
            ]
        }
    }
    

    其中 --compile-commands-dir 是必须的,clangd会默认去搜索这个目录下的 compile_commands.json 文件,这个文件是工程经过cmake编译后产生的一个文件,
    格式大概如下:

    {
      "directory": "C:/Users/Frankie/Downloads/ha0_dd/build",
      "command": "C:\\Users\\Frankie\\AppData\\Roaming\\yt_config_tool\\gcc-arm-none-eabi-10.3-2021.10\\bin\\arm-none-eabi-gcc.exe -DARMCM7_DP -DCORTEXM -DCPU_YTM32B1HA0 -DYTM32B1HA0 -IC:/Users/Frankie/Downloads/ha0_dd/board -IC:/Users/Frankie/Downloads/ha0_dd/platform/drivers/src/clock/YTM32B1Hx -IC:/Users/Frankie/Downloads/ha0_dd/platform/drivers/src/pins -IC:/Users/Frankie/Downloads/ha0_dd/platform/drivers/inc -IC:/Users/Frankie/Downloads/ha0_dd/platform/devices/common -IC:/Users/Frankie/Downloads/ha0_dd/platform/devices -IC:/Users/Frankie/Downloads/ha0_dd/platform/devices/YTM32B1HA0/include -IC:/Users/Frankie/Downloads/ha0_dd/platform/devices/YTM32B1HA0/startup -IC:/Users/Frankie/Downloads/ha0_dd/CMSIS/Core/Include -IC:/Users/Frankie/Downloads/ha0_dd/rtos/osif -mcpu=cortex-m7 -g -mlittle-endian -mthumb -specs=nosys.specs -Wall -Werror=all -Wno-error=comment -g -O1 -ffunction-sections -fdata-sections -Wno-error=unused-variable -Wno-error=unused-parameter -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-result -Wno-error=maybe-uninitialized -Wno-error=sign-compare -Wno-error=strict-aliasing -Wno-error=unknown-pragmas -Wno-error=format -fdiagnostics-color=always -o CMakeFiles\\GENERATED_CONFIG_TARGET.dir\\board\\clock_config.c.o -c C:\\Users\\Frankie\\Downloads\\ha0_dd\\board\\clock_config.c",
      "file": "C:\\Users\\Frankie\\Downloads\\ha0_dd\\board\\clock_config.c",
      "output": "CMakeFiles\\GENERATED_CONFIG_TARGET.dir\\board\\clock_config.c.o"
    },
    

    记录了每一个c文件的搜索路径,编写选项等信息。
    --query-driver是可选测试,用于找到类似stdint.h 这种头文件,因为这些头文件在自己的工程下是不存在的。
    配置好后,就可以进行跳转了。

    效果

    数组自动加入索引

    9e338cfa-18c3-4e1f-b0e3-63fbedbd5bab-image.png

    函数参数名的显示

    4b69577a-7b19-496c-af7b-5020207ad18c-image.png

    代码自动补全

    qqq1.gif

    C/C++ 插件

    80bd2c0d-d2cf-4568-95ad-6ff6f2629e51-image.png
    因为这个插件不是很推荐,所以就简单解释一下🙄

    安装

    直接从vscode的扩展商店里安装即可

    配置

    c/c++的配置是每个workspace下的.vscode/c_cpp_properties.json文件里单独配置

    {
        "env": {
            "PROJ_DIR": "${workspaceFolder}"
        },
        "configurations": [
            {
                "name": "YTM32B1HA0",
                "intelliSenseMode": "gcc-x64",
                "includePath": [
                    "${PROJ_DIR}/board",
                    "${PROJ_DIR}/platform/drivers/src/clock/YTM32B1Hx",
                    "${PROJ_DIR}/platform/drivers/src/pins",
                    "${PROJ_DIR}/platform/drivers/inc",
                    "${PROJ_DIR}/platform/devices/common",
                    "${PROJ_DIR}/platform/devices",
                    "${PROJ_DIR}/platform/devices/YTM32B1HA0/include",
                    "${PROJ_DIR}/platform/devices/YTM32B1HA0/startup",
                    "${PROJ_DIR}/CMSIS/Core/Include",
                    "${PROJ_DIR}/rtos/osif"
                ],
                "defines": [
                    "YTM32B1HA0",
                    "CPU_YTM32B1HA0"
                ],
                "cStandard": "c11",
                "cppStandard": "c++17",
                "compileCommands": "${workspaceFolder}/build/compile_commands.json",
                "browse": {
                    "path": [
                        "${workspaceFolder}"
                    ],
                    "limitSymbolsToIncludedHeaders": true,
                    "databaseFilename": ""
                },
                "configurationProvider": "ms-vscode.cmake-tools"
            }
        ]
    }
    

    也可以指定 compile_commands.json 文件

    1 条回复 最后回复
    1
    • georgeG 离线
      georgeG 离线
      george YunTu
      写于 最后由 编辑
      #2

      而且这两个插件貌似会有冲突

      FrankieF 1 条回复 最后回复
      0
      • FrankieF 离线
        FrankieF 离线
        Frankie YunTu
        在 回复了 george 最后由 编辑
        #3

        george 是的

        1 条回复 最后回复
        0
        • LCZOUYIWENL 离线
          LCZOUYIWENL 离线
          LCZOUYIWEN
          写于 最后由 编辑
          #4

          安装C/C++ 插件还不行,然后又安装了clangd 插件还是不行

          1 条回复 最后回复
          0
          • limanjiangL 离线
            limanjiangL 离线
            limanjiang YunTu
            写于 最后由 编辑
            #5

            我当时遇到类似问题,是参考这个链接解决的https://blog.51cto.com/u_15531854/5221004

            1 条回复 最后回复
            0

          • 云途论坛规则/Yuntu Forum Rules

            发帖前请查看

          • YCT离线License申请流程

            帮助没办法联网的电脑使用YCT

          • YT CONFIG TOOL调查问卷

            帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

          • demo
            12
            can
            8
            lin stack
            6
            yt-link
            5
            vscode
            3
            adc模块
            2
            i2c
            2
            uuid
            2
            Online Users
            nuseavaN
            nuseava
            BillYinB
            BillYin
            • 登录

            • 登录或注册以进行搜索。
            • 第一个帖子
              最后一个帖子
            0
            • 版块
            • 最新
            • 标签
            • 热门