vscode编译C的相关配置
- 一、c项目的结构
- 二、配置文件
- 三、配置文件内容
一、c项目的结构
因为项目中的需要,需要使用c开发一个小工具,安装到硬件设备中。一直做的是java,不太熟悉c,也不清楚用什么工具开发,网上查了一番就使用vscode进行开发,并且使用的tencent的CloudStudio的云端IDE,在线开发可随时启动,底层环境就是linux,省掉了windos下虚拟机安装linux的麻烦。
项目主要结构如下图:
二、配置文件
这里只记录我在做vscode编译c时的配置,包含下面3个文件:
- tasks .json ,编译任务的配置文件;
- launch.json ,运行调试的配置文件;
- c_cpp_properties.json ,环境配置文件;
我在配置文件tasks .json和launch.json中,各配置了2种配置项,可以直接在linux和window环境下编译和调试,使用了名称进行区分。
c_cpp_properties.json的linux和window环境配置就需要单独配置,不能合在一起,后面放代码。
三、配置文件内容
tasks .json
{
"version": "2.0.0",
"tasks": [
{
"label": "compile", // 对应launch.json中configurations的配置 "preLaunchTask": "compile"
"command": "gcc",
"args": [
"-I",
"${workspaceFolder}/include", // "-I","头文件路径"
"-L",
"${workspaceFolder}/lib", // "-L","库文件路径"
"-fdiagnostics-color=always",
"-g",
"${file}", // 源文件名
"-lmosquitto",
"-luci",
"-o",
"${workspaceFolder}/out/${fileBasenameNoExtension}" // 编译文件存放的目录
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
},
{
"label": "echo", // 对应launch.json中configurations的配置 "preLaunchTask": "echo",
"type": "shell",
"command": "gcc",
"args": [
"-I",
"${workspaceFolder}\\include", // "-I","头文件路径"
"-L",
"${workspaceFolder}\\lib", // "-L","库文件路径"
"-fdiagnostics-color=always",
"-g",
"${file}", // 源文件名
"-o",
"${workspaceFolder}\\out\\${fileBasenameNoExtension}", // 编译文件存放的目录
"-fexec-charset=GBK" //解决中文乱码
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": false
}
}
launch.json
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(Linux)调试",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/out/${fileBasenameNoExtension}", // 编译文件存放的目录
"preLaunchTask": "compile",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"miDebuggerArgs": "-q -ex quit; wait() { fg >/dev/null; }; /usr/bin/gdb -q --interpreter=mi",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "(Windows)调试",
"type": "cppvsdbg", // window下使用,linux环境下会提示报错,可不用理会
"request": "launch",
"program": "cmd",
"preLaunchTask": "echo",
"args": [
"/C",
"${workspaceFolder}\\out\\${fileBasenameNoExtension}", // 编译文件存放的目录
//"&",
//"echo.",
//"&",
//"pause"
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"console": "integratedTerminal"
}
]
}
linux下的c_cpp_properties.json
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"cStandard": "c11",
"cppStandard": "c++11",
"intelliSenseMode": "linux-gcc-x64",
"configurationProvider": "ms-vscode.makefile-tools",
"compilerPath": "/usr/bin/gcc"
}
],
"version": 4
}
window环境下的c_cpp_properties.json,与linux下的配置区别不大,主要是编译工具的选择和路径配置。
前提:自行安装mingw64,我的widow10下mingw64安装目录为D:\ProgramTools\mingw64,环境变量配置PATH,D:\ProgramTools\mingw64\bin
{
"configurations": [
{
"name": "win64",
"includePath": [
"${workspaceFolder}/**",
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-gcc-x64",
"configurationProvider": "ms-vscode.makefile-tools",
"compilerPath": "D:\\ProgramTools\\mingw64\\bin\\gcc"
}
],
"version": 4
}
注意事项:在配置编译文件存放路径时,根据自身的需要配置路径。上文中,我配置的是out文件夹,则在配置文件中编译和执行的时候,要配置"{fileBasenameNoExtension}",不然调试时路径不对,会找不到编辑文件。