开发IDE与环境
最好是使用ubuntu系统进行开发,如果没有的话,基于windows使用vs code 进行ssh连接到远程的ubuntu主机进行开发也可以。开发的过程跟本地差不多。
vs code IDE 插件的安装
1.变成中文菜单与提示,安装MS-CEINTL.vscode-language-pack-zh-hans插件。
安装完之后,更改语言重新启动,右下角会有提示。
2.安装ssh的插件,搜索remote
只要装第一个后面两个红框里的会自动安装。
3.安装c++的插件
4.python插件安装
5.代码补全,可供选择。
- TabNine.tabnine-vscode (有免费的)
- GitHub.copilot (一个月10美元)
上面不包括5,一套装完之后是13个插件。
远程ssh到ubuntu主机
重启vs之后,点击左下角。
选择连接到主机。然后添加新的主机。
需要输入一个远程的地址登陆字符串。
比如:ssh root@192.168.1.2
然后会让你选择存储的位置。一般选择第一个默认的就行了。
选择之后左下角会给提示,添加成功。
进入的方式,点击左下角。
然后会弹出一个新的vs窗口,需要你选择平台,输入密码,进行相关的第一次进入的配置。配置完之后如下图。
可以点击左下角,选择编辑,修改显示的名字。
此时这个窗口,打开终端,显示的就是远程ubuntu主机的终端了。相当于在ubuntu上调试代码。
在远程的vs界面上,插件部分,显示三个部分。
会有很多扩展,在工作区被禁用。
可以把你想要的插件,在远程也装一下。按照这个方式,把已安装的插件都在远程安装一下。
到此,在本地开发就跟在远程完全一致了。如果将云主机替换远程ubuntu,也是可以运行的。替换云主机之后,需要重新安装插件。
x86 的 ubuntu主机装conda环境
安装步骤,很简单就是下载sh文件安装即可。具体参考:http://www.jnnr.cn/a/210674.html。
安装完之后,换成清华源,pip装东西会快很多。具体参考:https://mirror.tuna.tsinghua.edu.cn/help/anaconda/
测试python环境的搭建
基于远程ubuntu主机,搭建用于开发的python环境。利用终端建立好文件夹之后,运行code . 。就在vs中打开了这个工作区。
需要注意的是,需要先激活python虚拟环境,用python指令跑起来对应的代码。在写python代码的时候,建立不要依赖ide的右键运行,而是使用控制台输指令运行。
python指令的位置。
python程序的调试
创建launch.json文件,然后把下面这个复制过去。
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
// "program": "${file}", // 当前文件
"program": "demo.py", // 指定文件
"console": "integratedTerminal",
"justMyCode": true // false表示可以进入第三方库(如Pytorch)里进行调试
}
]
}
注意:debug功能不支持python3.7以下的python版本。debug调试使用的python版本可以在vs的右下角选择。
c++环境配置
注意:当前配置的环境主要为了演示C++基础知识教学,后面做项目时会有调整。
注意,c++编译需要g++,which指令查看。
演示代码:
#include <iostream>
using namespace std;
int main(){
// 计算 1+2+3+4+5
int sum {0};
for (int i {0}; i < 5; i++){
sum += i;
}
// 输出结果
cout << sum << endl;
return 0;
}
-
先用g++ main.cpp -o main生成可执行文件。
-
再用VS Code 菜单:终端-运行生成任务生成可执行文件,需要在.vscode先添加tasks.json。
运行这个指令,不需要输入控制台指令,就可以生成可执行文件。可以点击后面的齿轮对任务进行完整的配置。这里会用到一些常量,附上一个常量表。
以:/home/Coding/Test/.vscode/tasks.json 为例
${workspaceFolder} :表示当前workspace文件夹路径,也即/home/Coding/Test
${workspaceRootFolderName}:表示workspace的文件夹名,也即Test
${file}:文件自身的绝对路径,也即/home/Coding/Test/.vscode/tasks.json
${relativeFile}:文件在workspace中的路径,也即.vscode/tasks.json
${fileBasenameNoExtension}:当前文件的文件名,不带后缀,也即tasks
${fileBasename}:当前文件的文件名,tasks.json
${fileDirname}:文件所在的文件夹路径,也即/home/Coding/Test/.vscode
${fileExtname}:当前文件的后缀,也即.json
${lineNumber}:当前文件光标所在的行号
${env:PATH}:系统中的环境变量
tasks.json将控制台这套操作(编译,执行)进行了参数化,如下(需要先确定g++的路径):
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ 生成活动文件",
"command": "/usr/bin/g++", // g++的路径
"args": [
"-fdiagnostics-color=always", // 颜色
"-g", // 调试信息
"-Wall", // 开启所有警告
"-std=c++14", // c++14标准
"${file}", // 文件本身,仅适用于C++基础知识教学,无法同时编译所有文件
// "${fileDirname}/*.cpp", // 文件所在的文件夹路径下所有cpp文件
"-o", // 输出
"${workspaceFolder}/release/${fileBasenameNoExtension}" // 文件所在的文件夹路径/release/当前文件的文件名,不带后缀
],
"options": {
"cwd": "${fileDirname}" // 文件所在的文件夹路径
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: /usr/bin/g++"
}
]
}
如果要调试的话,launch.json需要做如下的改动,就是跟python的那个在一个文件里面。
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg", // C++调试
"request": "launch",
"program": "${workspaceFolder}/release/${fileBasenameNoExtension}", // 文件所在的文件夹路径/release/当前文件的文件名,不带后缀
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}", // 文件所在的文件夹路径
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++ 生成活动文件" // tasks.json的label
},
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}", // 当前文件
// "program": "demo.py", // 指定文件
"console": "integratedTerminal",
"justMyCode": true // false表示可以进入第三方库(如Pytorch)里进行调试
}
]
}
配置之后,正常就可以通过终端-生成活动任务,生成编译后的可执行文件。
然后测试的话,进入debug页面,也可以测试了。