参考文献
在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 文件夹。
Mr.Zhang
