自定义vscode的extensions目录:
- 可以通过快捷方式,添加命令行参数: vscode.exe –extensions-dir d:/vscode-extensions。
- 也可通过在.vscode/下,通过
mklink /J extensions d:/vscode-extensions/
创建extensions的硬连接方式。
将vscode打造成Portable:
在vscode目录下,新建data目录。将extensions复制于此data目录;并在新建tmp目录,用于存储用户临时数据。
配置C++开发环境
- 前提条件:
- 安装VSCODE
- 安装C++ Extension for VSCODE
- 安装WSL
- 设置WSL Linux环境
- 在~/下,创建projects/helloworld
- 更新WSL:
sudo apt update && sudo apt dist-upgrade
- 安装必要编译环境:
sudo apt install build-essential gdb
- 创建Workspace
- 在Windows下任意目录,使用cmd 创建与WSL结构类似的目录:projects/helloworld
- 使用vscode打开helloworld目录:
cd projects/helloworld && code .
- 配置编译器路径(c_cpp_properties.json)
- ctrl+shift+p > C/C++:Edit Configurations(UI)
- 选中compiler path 为
/usr/bin/g++
- Intellisense mode 为
${default}
- 创建构建任务:(tasks.json)
- ctrl+shift+p > Tasks:Configure Default Build Task
- 编辑tasks.json为:
{ "version": "2.0.0", "windows": { "options": { "shell": { "executable": "bash.exe", "args": ["-c"] } } }, "tasks": [ { "label": "build hello world on WSL", "type": "shell", "command": "g++", "args": [ "-g", "-o", "/home/<your linux user name>/projects/helloworld/helloworld.out", "helloworld.cpp" ], "group": { "kind": "build", "isDefault": true } } ] }
- 配置调试设置:(launch.json)
- 菜单Debug > Add Configuration 选择 C++(GDB/LLDB)
- 编辑launch.json为:
``` json
{
“version”: “0.2.0”,
“configurations”: [
{
“name”: “(gdb) Launch”,
“type”: “cppdbg”,
“request”: “launch”,
“program”: “/home/
/projects/helloworld/helloworld.out", // 这里是WSL中的目录 "args": [""], "stopAtEntry": true, // 在入口处自动停止 "cwd": "/home/ /projects/helloworld/", // 这里是WSL中的目录 "environment": [], "externalConsole": true, "windows": { "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] }, "pipeTransport": { "pipeCwd": "", "pipeProgram": "c:\\windows\\sysnative\\bash.exe", "pipeArgs": ["-c"], "debuggerPath": "/usr/bin/gdb" }, "sourceFileMap": { "/mnt/c": "${env:systemdrive}/", "/usr": "C:\\Users\\ " // 这里的实际目录,会在接下来的步骤再设置 } } ] }
7. 添加helloworld.cpp
- 在VSCode中,新建文件helloworld.cpp
- 添加测试代码并保存:
``` cpp
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> msg {"Hello", "C++", "World", "from", "VS Code!", "and the C++ extension!"};
for (const string& word : msg)
{
cout << word << " ";
}
cout << endl;
}
- 移到string上,按下F12,可打开其定义头文件
- 在VSCODE选项卡上,右键,Copy Path,即可得到包含的头文件真实路径。
- 设置系统头文件目录:
- 将上一步复制的路径,填入launch.json的sourceFileMap:
"sourceFileMap": { "/mnt/c": "${env:systemdrive}/", "/usr": "C:\\Users\\Administrator\\AppData\\Local\\Packages\\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\\LocalState\\rootfs\\usr\\" }
- 将上一步复制的路径,填入launch.json的sourceFileMap:
- 配置完成
- 可按ctrl+shift+b构建,按F5即可调试。
Visual Studio
编译错误:
- error C3859: virtual memory range for PCH:解决方法是: 在项目上右键–>属性–>C++–>命令行, 然后在最下面的文本框里输入:/Zm2000
- error C1076: compiler limit: internal heap reached; use /Zm to specify a higher limit 解决方法同上
任何PCH> 250M的都被视为大文件。
配置WSL以及开机启动
wsl --set-default-version 2
wsl -l -v
Windows开机启动: WIN+R > shell:startup >
'init-linux.vbs'
Set ws = WScript.CreateObject("WScript.shell")
ws.run "wsl -d ubuntu -u root /etc/init.wsl"
修改sudo vim /etc/init.wsl
#! /bin/sh
service docker start
保存,退出,sudo chmod +x /etc/init.wsl