vscode的配置和使用
一. 基于g++的命令编译文件
//g++编译单文件,不包含调试信息
g++ .\main.cpp
//g++编译单文件,生成带调试信息的可执行文件
g++ -g .\main.cpp -o my_single_swap
//g++编译多文件,生成带调试信息的可执行文件
g++ -g .\main.cpp .\swap.cpp -o my_multi_swap
二. json文件的配置
单文件编译时,vscode可以生成合适的json文件,多文件编译时就需要更改json文件(测试的只会生成launch.json,生成不了tasks,json),这时候可以通过ctrl+shirft+p 输入task 选择模板生成 或者 f5 调试程序选g++.exe build active file 会自动生成task.json
1. launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe - 生成和调试活动文件",
"type": "cppdbg", //
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
//代表你要调试的可执行文件
//多文件需要g++编译,然后把这个program项改成生成的可执行文件名
//直觉告诉我还是可以通过配置tasks实现
"args": [], //往可执行文件传参
"stopAtEntry": false,
"cwd": "${fileDirname}", //进入当前目录
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:\\Apps\\TDM_GCC\\bin\\gdb.exe", //调试器路径
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe 生成活动文件"
//在调试之前要做的工作,生成可执行文件
//对应于tasks.json的label
}
]
}
2.tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
//根据label调用编译任务
//g++编译命令
"command": "D:\\Apps\\TDM_GCC\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}", //编译多文件更改文件名
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
三. cmake文件的配置
帮助我们生成极其复杂的makefile
project(MYSWAP)
add_executable(my_cmake_swap main.cpp swap.cpp)
需要在终端进行操作,操作之前需要进行配置
ctrl+shift+p 搜索cmake 找到configure 选择GCC
(这里碰到一个问题Bad CMake executable . Is it installed or settings contain the correct path (cmake.cmakePath)?解决方法是在设置中(【Settings】->【Extensions】->【CMake Tools Configuration】->【CMake:Cmake Path】)指定 cmake.exe 的文件地址。
具体方法是打开设置(快捷键 Ctrl+逗号)搜索 cmake.cmakePath 可以看到 Name/path of the CMake executable to use. 默认为 cmake 将其设置自己安装 cmake.exe 文件地址,例如我的设置是 E:\Program\Develop\Cmake\bin\cmake.exe。另外cmakelists不会自动补全也是这个原因.
)
会自动建立一个build文件夹,进入cmake文件夹执行 cmake …
(报错:cmake : 无法将“cmake”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
暂时没用解决,如果在win的cmd中运行指令没用问题,不运行该指令也可编译成功)
执行 mingw32-make.exe 在build文件夹下生成了可执行文件,然后配置json就能运行了.
也可以自己建立build文件夹,然后从cmake…
(报错CMake Error at CMakeLists.txt:1 (project):
Running
‘nmake’ ‘-?’
failed with:
系统找不到指定的文件。
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage)
我们之前使用的tasks.json文件是配置的执行g++编译指令
那如何把我们要执行的
- cd build
- cmake …
- mingw32-make.exe
对应到tasks.json中,让tasks.json帮我们去执行
{
"version": "2.0.0",
//进入build目录
"options": {
"cwd": "${workspaceFolder}/build"
},
"tasks": [
//camke ..
{
"type": "shell",
"label": "cmake",
"command": "cmake",
"args": [
"..",
],
},
//mingw32-make.exe
{
"label": "make",
"group": {
"kind": "build",
"isDefault": true
},
"command": "mingw32-make.exe",
"args": [
]
},
{
"label": "Build", //对应launch.json的"preLaunchTask"
"dependsOn":[
"cmake",
"make"
]
},
]
}
附录
CMakrLists文件
cmake_minimum_required(VERSION 3.22)
project(MYSWAP)
add_executable(my_cmake_swap main.cpp swap.cpp)
add_definitions(-Wall -g)