参考文献
在vscode中编辑、编译、下载Keil工程
一,控件列表
1、C/C++ Advanced Lint //这个和CLang,CppCheck , Flexelint有关系,没有他就不能代码格式化
2、C/C++ Snippets //代码格式化
3、C/C++ Extension Pack //C++基本,需要 C/C++ Themes,C/C++,CMake,CMake Tools
4、Chinese(Simplified)(简体中文)
5、Code Runner
6、GBKtoUTF8 by bukas 不能安装出现重大bug:执行ctrl+x时文件内容和system_stm32f10x.h一摸一样
7、Include Autocomplete
8、Keil Assistant //keil 插件
9、Rainbow Brackets //好像不能用了
10、Tabnine Al Autocomplete
12、vscode-icons
13、Remote – SSH① //可以通过ssh打开远程电脑的工作区,注意VScode会给远程专门设置一个插件目录,其插件是独立的,既不是local也不是远程主机的,而是存储在Local一个特殊位置,只为Remote服务
14、Keil Assistant 需要设置MDK路径,两个全部设置为:C:\Keil_v5\UV4\UV4.exe
15、bookmark 书签特别有用
二,关于SSH远程
Remote – SSH是一个强大的工具,允许您使用安全 SSH 协议在远程服务器或虚拟机上工作。它使您能够直接从远程环境中的本地 VS Code 实例编辑文件、运行命令和调试应用程序,从而提供无缝的开发体验,使用的时候需要注意:
①被登陆的ssh服务器,会在服务器上创建自己的插件目录,如果ssh服务器也安装了VSCode,那么一共有3个插件目录:ssh客户端的,被登录服务器的,服务器VSCode的插件目录
②ssh客户端的插件不一定可以在远程登陆的时候能用,查看插件的时候会发现有2个分类:本地和远程,
③本地的插件在登陆远程的时候不一定能用,会显示灰色,有感叹号提示这个插件要在远程插件目录添加
④并不是所有本地插件都不可用,不是灰色的就能用
三,目录
如下所示1-3是3个安装目录,在每个安装目录都有独立的插件目录
1、Windows安装目录:
C:\Users\{Username}\AppData\Local\Programs\Microsoft VS Code
2、Linux安装目录:
~/.vscode
3、Linux Server安装目录(ssh 远程):
~/.vscode-server,使用一段时间后会变得很大,可以直接删除然后重新安装远程插件
4、C_Cpp: Intelli Sense Cache Path
lntelliSense 会为头文件创建缓存用来提高性能. 默认缓存文件夹
Windows:%LocalAppData%/Microsoft/vscode-cpptools”
Linux:”SXDG CACHE HOME/Vscode-cpptools/”
Linux:”SHOME/.cache/vscode-cpptools/”
Mac: “SHOME/Library/Caches/vscode-cpptools/”
在设置里搜索”C_Cpp.intelliSenseCacheSize” 可以设置其大小,默认是5GB,可以设置成1GB
四,mingw编译器安装(针对STM32开发)
不安装mingw会导致,头文件提示找不到问题
网上直接下载安装:比较慢,有一个下载过程,安装选项选择:C语言的”mingw32-base-bin”,针对C++的”mingw32-gcc-g++bin2个即可
或者直接下载压缩包,在页面 发点击”x86_64-win32-seh”
两种方式都需要将mingw/bin添加到系统目录
五,STM32使用VSCODE编程报未定义标识符
在keil里面右击project,选择”option for **”,在C/C++里面含有预定义宏,比如”STM32F10X_HD, USE_STDPERIPH_DRIVER”
另外vscode还需要把mdk的arm部分头文件提前include进来
修改方式:
用vscode打开一个mdk工程,在右下角有一个”win32″按钮,可以编辑”c_cpp_properties.json”,或者直接在项目根目录有一个.vscode文件夹,修改成如下
{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**", "C:\\Keil_v5\\ARM\\ARMCC\\include" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE", "STM32F10X_HD", "USE_STDPERIPH_DRIVER" ], "cStandard": "gnu17", "cppStandard": "gnu++14", "intelliSenseMode": "windows-gcc-x64" } ], "version": 4 }
六,VS配置文件夹.vscode
建议在每个工作文件夹下创建.vscode,并将*.code-workspace保存到里面,如果没有c_cpp_properties.json按下“Crtl+Shift+P”打开 VSCode 的控制台,然后输入“C/C++: Edit configurations(JSON) ”,会生成c_cpp_properties.json,在里面可以添加宏定义,比如“_POSIX_C_SOURCE=199309L“就可以让time函数正常,里面有创建“settings.json”文件如下:
{ "search.exclude": { "**/node_modules": true, "**/bower_components": true, }, "files.exclude": { "**/.git": true, "**/.svn": true, "**/.hg": true, "**/CVS": true, "**/.DS_Store": true, }, "files.encoding": "gb18030" }
search.exclude是查找排除,”**”表示任意文件路径,比如**/.vscode,**/.output等等,注意vscode不支持search.include选项目,而且仅仅只可以搜索当前工作目录,V想要搜索必须在UI设置搜索路径
files.exclude 是文件排除
注意C:\Users\Lee\AppData\Roaming\Code\User 下也有是settings.json如下,他是全局配置,项目目录.vscode中的的settings是单独工作区配置
{ "workbench.iconTheme": "vscode-icons", "tabnine.experimentalAutoImports": true, "KeilAssistant.C51.Uv4Path": "C:\\Keil_v5\\UV4\\UV4.exe", "KeilAssistant.MDK.Uv4Path": "C:\\Keil_v5\\UV4\\UV4.exe", "explorer.confirmDelete": false, "editor.fontSize": 18, "vsicons.dontShowNewVersionMessage": true, "git.enableSmartCommit": true, "git.confirmSync": false, "diffEditor.ignoreTrimWhitespace": false, "cortex-debug.armToolchainPath": "C:\\Program Files (x86)\\GNU Tools ARM Embedded\.4 2016q3\\bin", "cortex-debug.JLinkGDBServerPath": "C:\\Program Files (x86)\\SEGGER\\JLink_V490\\JLinkGDBServerCL.exe", "git.autofetch": true, "workbench.startupEditor": "none", "[c]": { "editor.defaultFormatter": "ms-vscode.cpptools" }, "git.openRepositoryInParentFolders": "always", "c-cpp-flylint.clang.includes": [], "remote.SSH.remotePlatform": { "Ubuntu20.4": "linux" }, "qtConfigure.qtDir": "/opt/qt5.12.7_ssd", }
C:\Users\Lee\AppData\Roaming\Code\User\keybindings.json 按键绑定,按键绑定备份
七,QT嵌入式开发额外配置
1、c_cpp_properties.json
{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/opt/Qt5.12.12/5.12.12/gcc_64/include", "/opt/Qt5.12.12/5.12.12/gcc_64/include/QtWidgets", "/opt/Qt5.12.12/5.12.12/gcc_64/include/QtGui", "/opt/Qt5.12.12/5.12.12/gcc_64/include/QtCore", "/home/lee/project/build/M2200A-I_MX6Uzlg-Release/ui" ], "defines": ["_POSIX_C_SOURCE=199309L","__USE_XOPEN"],//_POSIX_C_SOURCE 为了让很多不识别函数/变量识别,__USE_XOPEN strftime "compilerPath": "/usr/bin/gcc", "cStandard": "c17", "cppStandard": "gnu++14", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 }
c_cpp_properties.json windows端
{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", // "/opt/Qt5.12.12/5.12.12/gcc_64/include/QtGui", //"/opt/Qt5.12.12/5.12.12/gcc_64/include/QtCore", "D:/Qt/Qt5.12.12/5.12.12/mingw73_32/include", "D:/Qt/Qt5.12.12/5.12.12/mingw73_32/include/QtWidgets", "D:/Qt/Qt5.12.12/5.12.12/mingw73_32/include/QtGui", "D:/Qt/Qt5.12.12/5.12.12/mingw73_32/include/QtCore", "D:/Qt/Qt5.12.12/Tools/mingw730_32/lib/gcc/i686-w64-mingw32/7.3.0/include/c++/ext" //"/home/lee/project/build/M2200A-I_MX6Uzlg-Release/ui" ], "defines": ["_POSIX_C_SOURCE=199309L","__USE_XOPEN","UNICODE"],//_POSIX_C_SOURCE 为了让很多不识别函数/变量识别,__USE_XOPEN strftime "compilerPath": "D:/Qt/Qt5.12.12/Tools/mingw730_32/bin/gcc.exe", "cStandard": "c17", "cppStandard": "gnu++14", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 }
八,VSCode删除
win+R 打开运行,输入 %appdata% 回车,删除 Code 文件夹和 Visual Studio Code 文件夹;
win+R 打开运行,输入 %userprofile% 回车,删除 .vscode 文件夹。