前言
用vscode写c/c++时, 为了方便, 会把不同的源文件放在一个文件夹里
这里不是做项目, 一个源文件就是一个单独的程序
然后生成的可执行文件和源代码就会放在一个目录里, 还是同名, 就很容易点错, 所以就想着改改
环境和版本
- Visual Studio Code 1.54.3
- Liunx Ubuntu 18.04 LTS
- g++ 7.5.0
code-runner设置
打开vscode, 菜单栏文件
->首选项
->设置
使用搜索功能, 搜索code-runner
并找到Excutor Map
, 点击在settings.json
编辑
出来这样的页面, 我们要修改的是cpp
这一行, 当然, 其它语言也是一样
修改成如下:
1
| "cpp": "cd $dir && if [ ! -d \"bin\" ];then mkdir bin;fi && g++ $fileName -o bin/$fileNameWithoutExt && bin/$fileNameWithoutExt"
|
其中if [ ! -d \"bin\" ];then mkdir bin;fi
为判断bin
是否存在, 如果不存在则创建, 当然, bin
这个名字也改成自己喜欢的
调试
配置调试的是launch.json
这个文件, 而在调试程序执行前会需要先进行编译生成可执行二进制文件, 这时就需要配置task.json
文件
在launch.json
中, 通过改写preLaunchTask
参数, 并在task.json
中添加参数, 可以达到预先创建bin
文件夹的目的
task.json
中加上如下任务:
1 2 3 4 5
| { "type":"shell", "label":"创建bin文件夹", "command":" if [ ! -d \"bin\" ];then mkdir bin;fi" }
|
并在生成可执行文件的参数中, 更改目录
1 2 3 4 5 6
| "args": [ "-g", "${file}", "-o", "${fileDirname}/bin/${fileBasenameNoExtension}" ],
|
launch.json
中修改可执行文件的位置
1
| "program": "bin/${fileBasenameNoExtension}"
|
lauch.json
中添加任务:
1 2 3 4
| "preLaunchTask": [ "创建bin文件夹", "C/C++: g++ 生成活动文件" ]
|
完整tasks.json
参考代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| { "tasks": [ { "type":"shell", "label":"创建bin文件夹", "command":" if [ ! -d \"bin\" ];then mkdir bin;fi" }, { "type": "cppbuild", "label": "C/C++: g++ 生成活动文件", "command": "/usr/bin/g++", "args": [ "-g", "${file}", "-o", "${fileDirname}/bin/${fileBasenameNoExtension}" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "调试器生成的任务。" } ], "version": "2.0.0" }
|
完整的launch.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| { "version": "0.2.0", "configurations": [ { "name": "g++ - 生成和调试活动文件", "type": "cppdbg", "request": "launch", "program": "bin/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": [ "创建bin文件夹", "C/C++: g++ 生成活动文件" ], "miDebuggerPath": "/usr/bin/gdb" } ] }
|
没必要直接复制粘贴, 版本可能会更改而不适用, 看懂怎么改的即可
windows系统方法也类似, 要注意的