1. 前置工作
在ubuntu中安装gcc和g++编译器
sudo apt install gcc
sudo apt install g++
2. 插件安装
- c/c++
- c++ intellisense(代码提示)
- chinese(simplified) language
- CMake
- CMake Tools(cmake插件集合)
3. 环境配置
-
在调试界面点击小齿轮开始配置,在弹出的选项中选择c++(GDB/LLDB),选择g++配置即可。
-
此时会弹出一个launch.json配置文件,通常我们关注三个参数:
- program:将要进行调试的程序的路径
- args:程序调试时,传递给程序的命令行参数,一般设为空即可
- cwd:调试程序的工作目录
vscode的配置文件可以使用一些预设好的变量(打开文件指主函数文件):
${workspaceFolder} - VS Code 中打开的文件夹目录 (通常是项目的位置)
${workspaceFolderBasename} - 没有任何斜杠 (/)的 VS Code 中打开的文件夹目录
${file} - 目前打开文件的绝对位置
${relativeFile} - 目前打开文件相对于 workspaceFolder 的相对位置
${fileBasename} - 目前打开文件的文件名(有拓展名,如: main.cpp)
${fileBasenameNoExtension} - 目前打开文件的出去拓展名的文件名(无拓展名, 如: main.cpp)
${cwd} - task runner的工作目录
${fileDirname} - 目前打开文件的目录位置
${fileExtname} - 目前打开文件的拓展名
${lineNumber} - 文件中目前被选择的行数
${selectedText} - 文件中目前被选择的内容
-
配置好launch文件后,按快捷键shift+ctrl+p弹出命令面板,然后输入并进入Tasks:Configure Default Build Task (任务:配置默认生成任务) ——使用模板创建Task.json文件——others
-
在弹出的task文件中,通常修改command为“g++”,args为 “args”: “-g”, “${file}”, “-std=c++11”, “-o”, “${fileBasenameNoExtension}.out”
-
先ctrl+shirt+b编译,后进行调试
-
调试时可以使用断点
4. CMake工程的简单使用
-
新建文件夹并打开
-
ctrl+shirt+p:打开命令面板输入cmake:quick start
-
输入项目名称,并选择生成库还是执行文件
-
此时已经配置好了,自动生成了cmakelist.txt、main.cpp、build文件夹
-
此时写好cmakelist和main文件后,就可以cmake(configure)和build了,依次点击下图中的三角形和锤子图标
-
如果想对程序进行调试,首先将cmake中模式设为debug,然后配置调试文件(launch.jsion):点击调试——启动调试,选择c++,按照要求配置就好,注意不需要pretask那项
-
在写main文件时,如果想要加上第三方库文件的自动补全,需要在c_cpp_properties.json文件的“includePath”中加上库的头文件目录即可(好像插件中默认加入了usr/local/include目录)
路径最后添加 /** 这表示递归添加这个路径下的所有的文件。
5. 总结和注意事项
-
如果每次更改了程序需要重新build,然后再进行调试,如果直接进行调试则运行的是上次build的结果。通过在launch.json作如下更改可以使得每次调试之前都会自动进行build:
在launch.json文件中添加了”preLaunchTask“=”build",也就是添加一个launch之间的任务,任务名为build,这个build就是我们在tasks.json中设置的任务名 -
新建一个文件夹,然后在VScode中打开这个文件夹,vscode调试必须在文件夹下,单独打开一个文件调试会报错
-
配置launch.json文件,它是一个启动配置文件。需要进行修改地方的是指定运行的文件,其次我们还可以在里面添加build任务。
-
配置tasks.json文件,这个文件用来方便用户自定义任务,我们可以通过这个文件来添加g++/gcc或者是make命令,方便我们编译程序。
-
编译调试的时候需要切换到自己的main.cpp文件
6. # vscode的快捷键使用
快捷键 | 功能 |
---|---|
shirt+ctrl+p | 弹出命令面板 |
shirt+ctrl+b | 编译 |