如何使 VSCode 中 CMake Debug 的输出显示在 cmd 上而不是自带的 debug console
首先需要明确的一点是从 VSCode 插件商店下载的 CMake 是默认打印输出的结果在 debug console 中的,就像下面这样:
可以看到,一个问题是在加载 dll 时候会频繁的打印在 Debug Console 里面,从而导致我们本来想要输出的内容很难找到,另一方面,我在使用 spdlog 的时候,输出的内容本身是具有颜色的,就像下面这样:
但是在 Debug Console 中就只能显示成蓝色了,导致强迫症患者巨难受,因此在网上各种找办法,终于找到了解决方法:
那就是放弃 CMake 插件,使用我们从官方下载的 CMake 并且在 VSCode 中添加配置文件之后来进行编译。下面正式开始:
1. 前提条件:
你的电脑已经装有从官方下载的 CMake,VisualStdio ,确保你的电脑上有 msvc 编译环境。
2. 配置 launch.json 文件
如果找不到 launch.json 请 ctrl+Shift+P 然后输入 launch:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PYhjAe3v-1682935719029)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/41909074-033b-4dd6-9f89-9ca843488420/Untitled.png)]
{
// 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": "msvc",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/Editor.exe",
"args": [
"/Zi",
"/EHsc",
"/Fe:"
],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"console": "integratedTerminal",
"preLaunchTask": "build",
"logging": {
"moduleLoad": false
}
}
]
}
然后像上面一样进行配置即可,name 名字为 msvc,注意 program 为你自己的可执行行程序目录。
我们本次最需要关注的就是 "console": "integratedTerminal",
这条语句表明了我们的控制台选项,一共有三个:
integratedTerminal
::VS Code’s integrated terminal. 也就是内置终端
internalConsole
::Output to the VS Code Debug Console. 输出到内置控制台
externalTerminal
:Console applications will be launched in an external terminal window. 输出到外部终端
三种效果分别为:
3. 配置 tasks.json 文件
还需要进行任务配置
{
"version": "2.0.0",
"tasks": [
{
//使用本地默认编译器编译cmake
"type": "shell",
"label": "cmake",
"command": "cmake -B ./build ."
},
{
//使用本地默认编译器编译cmake生成的工程
"type": "shell",
"label": "make",
"command": "cmake --build ./build"
},
{
//依次执行前面两个步骤
"label": "build",
"dependsOrder": "sequence",
"dependsOn": [
"cmake",
"make"
]
}
]
}
然后按下 F5 便可以正常编译了。