一.参考教程

(一)基于g++命令

  • g++编译文件,生成带调试信息的可执行文件、并调试
g++ -g main.cpp -o my_single_swap
  • g++编译文件,生成带调试信息的可执行文件、并调试
g++ -g main.cpp swap.cpp -o my_multi_swap

(二)基于cmake

  • 编写最简单的CMakeList.txt
project(MYSWAP) //工程名
add_executable(mt_cmake_swap, main.cpp swap.cpp) //生成可执行文件,第一个参数为可执行文件名,后面的参数为链接的源文件
  • 进行多文件编译并测试
mkdir build
cd build
#如果电脑上已安装了VS,可能会调用MSVC编译器,使用(cmake -G "MinGW Makefiles" ..)代替(cmake ..)即可
#仅第一次使用cmake时使用(cmake -G "MinGW Makefiles" ..) 后面可使用(cmake ..)
cmake ..
mingw32-make.exe
  • 配置json
    vscode如何在maven中添加jsonup_c++ launch.json – for debug
    vscode如何在maven中添加jsonup_c++ tasks.json – for build before debug

3.扩展

(一)配置文件预定义变量#
支持下面的预定义变量:

${workspaceFolder} - 当前工作目录(根目录)
${workspaceFolderBasename} - 当前文件的父目录
${file} - 当前打开的文件名(完整路径)
${relativeFile} - 当前根目录到当前打开文件的相对路径(包括文件名)
${relativeFileDirname} - 当前根目录到当前打开文件的相对路径(不包括文件名)
${fileBasename} - 当前打开的文件名(包括扩展名)
${fileBasenameNoExtension} - 当前打开的文件名(不包括扩展名)
${fileDirname} - 当前打开文件的目录
${fileExtname} - 当前打开文件的扩展名
${cwd} - 启动时task工作的目录
${lineNumber} - 当前激活文件所选行
${selectedText} - 当前激活文件中所选择的文本
${execPath} - vscode执行文件所在的目录
${defaultBuildTask} - 默认编译任务(build task)的名

(二)预定义变量示例:
假设你满足以下的条件

一个文件 /home/your-username/your-project/folder/file.ext 在你的编辑器中打开;
一个目录 /home/your-username/your-project 作为你的根目录.
下面的预定义变量则代表:

${workspaceFolder} - /home/your-username/your-project
${workspaceFolderBasename} - your-project
${file} - /home/your-username/your-project/folder/file.ext
${relativeFile} - folder/file.ext
${relativeFileDirname} - folder
${fileBasename} - file.ext
${fileBasenameNoExtension} -file
${fileDirname} - /home/your-username/your-project/folder
${fileExtname} - .ext
${lineNumber} - 光标所在行
${selectedText} - 编辑器中所选择的文本

4.操作方法

(一)g++命令 and 修改 launch.json

  • 先在终端生产可执行文件
g++ -g main.cpp swap.cpp -o my_multi_swap
  • 然后按F5进行调试,同单文件操作相同相同,报错因为默认生产的配置文件是单文件路径,进行如下操作修改
    vscode如何在maven中添加jsonup_c++ launch.json
"program": "${workspaceFolder}/my_multi_swap.exe", //该路径指向生产的exe文件,指定调试的是该文件
"cwd": "${workspaceFolder}",

// 该方法由于已经通过命令行生成了可执行文件,所以可以将launch.json中的"preLaunchTask"注释掉

(二)

  • 先创建CMakeLists.txt,并填入
project(MYSWAP)
add_executable(mt_cmake_swap, main.cpp swap.cpp)
  • 然后进行CMake配置,ctrl+shift+P,输入CMake,找到CMake:Configure,指定GCC+版本号的编译器
    vscode如何在maven中添加jsonup_c++ 如果报错出现不知道选择哪一个cmake,提示更新setting配置文件,则通过ctrl+shift+P输入settings.json,将下面代码添加进工作区的配置文件中,再进行CMake配置
{
    "cmake.generator": "MinGW Makefiles"
}
  • 之后会在工作区出现build文件夹,接着在命令行输入
cd build
cmake ..
mingw32-make.exe
  • 配置launch.json
"program": "${workspaceFolder}/build/my_multi_swap.exe", 
"cwd": "${workspaceFolder}",
  • 之后就可以用F5进行调试了,值得注意的是当前注释了"preLaunchTask",所以对文件进行修改后,文件并没有重新编译,需要重新编译,再进行调试
  • 所以可以使用ctrl+shift+P,输入task,创建一个新的task.sjon,并进行如下配置
"-g",
                "main.cpp",
                "swap.cpp",
                "-o",
                "${fileDirname}\\out.exe"
  • 同时使launch.json中可执行文件路径与之对应
"program": "${workspaceFolder}/out.exe",

// 实际上这里的功能等同于命令行中的 g++ -g main.cpp swap.cpp -o out(建议使用该方法,调试时不用重新编译)