前言
- 此处介绍使用vscode进行cpp程序设计,使用make进行构建,gdb进行调试
- 此次项目用于到PAT刷题
- 以后逐步地使用gTest 进行测试,valgrind 进行深度检查,log4cplus进行日志输出
目录
前言
目录
参考
学习记录
安装c/c++插件
文件准备
编写Makefile
编写c++配置文件c_cpp_properties.json
配置make任务
编写调试配置文件launch.json
使用流程
参考
how-do-i-set-up-vscode-to-compile-c-code
vscode c++ programming
vscode external tasks
gdb does't find sources
别人的完全配置日志
学习记录
安装c/c++插件
Ctrl+Shift+P
ext install cpp
文件准备
cd pat-basic
mkdir bin
mkdir include
mkdir src
touch Makefile
cd ./src
touch hello_world.cpp
touch 1035.cpp
编写Makefile
PROJECT := zs_pat_basic
# define files and directories
CXX_SRCS := $(shell find src/ -name "*.cpp")
HEADER_FILES := $(shell find include/ -name "*.h")
SRC_DIR := ./src
INCLUDE_DIR := ./include
BUILD_DIR := ./bin
# define debug options
DEBUG_OPTIONS := -g
# define build targets
.PHONY : all
all: $(BUILD_DIR)/hello_world \
$(BUILD_DIR)/1035 \
$(BUILD_DIR)/1050 \
$(BUILD_DIR)/% : $(SRC_DIR)/%.cpp
$(CXX) -o $@ $(DEBUG_OPTIONS) -I$(INCLUDE_DIR) $<
.PHONY : clean
clean :
rm -rf $(BUILD_DIR)/*
编写c++配置文件c_cpp_properties.json
- vscode自身配置文件全部在./.vscode/目录下,在vscode资源浏览器中可以看到
- 注意,刚刚对cpp文件进行编辑后,#include 这句话是有红色下划线警示的,提示找不到文件,这时使用鼠标悬浮功能,点击“红色灯泡”,vscode会自动在配置文件夹中新建c_cpp_properties.json文件,文件内容如下
{
"configurations": [
{
"name": "Mac",
"includePath": ["/usr/include"],
"browse" : {
"limitSymbolsToIncludedHeaders" : true,
"databaseFilename" : ""
}
},
{
"name": "Linux",
"includePath": ["/usr/include"],
"browse" : {
"limitSymbolsToIncludedHeaders" : true,
"databaseFilename" : ""
}
},
{
"name": "Win32",
"includePath": ["c:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include"],
"browse" : {
"limitSymbolsToIncludedHeaders" : true,
"databaseFilename" : ""
}
}
],
"clang_format" : {
"style" : "file",
"fallback-style" : "LLVM",
"sort-includes" : false
}
}
配置make任务
- vscode没有内置make功能,需要借助Task功能进行配置
- Ctrl+shift+P 进入命令模式,键入tasks: Configure Task Runner,此时vscode自动生成task.json文件,编写内容如下
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "0.1.0",
"command": "make",
"isShellCommand": true,
"tasks": [
{
"taskName": "Makefile",
// Make this the default build command.
"isBuildCommand": true,
// Show the output window only if unrecognized errors occur.
"showOutput": "always",
// No args
"args": ["all"],
// Use the standard less compilation problem matcher.
// zs: The problem matcher is for gcc task, not for make.
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
]
}
编写调试配置文件launch.json
- 同样,vscode也需要自己定义调试相关选项
- 点击左侧工具栏”Debug“,点击”齿轮“按钮,此时vscode自动生成launch.json文件,编写内容如下
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch",
"type": "cppdbg",
"request": "launch",
"targetArchitecture": "x64",
"program": "${workspaceRoot}/bin/hello_world",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true,
"linux": {
"MIMode": "gdb"
},
"osx": {
"MIMode": "lldb"
},
"windows": {
"MIMode": "gdb"
}
},
{
"name": "C++ Attach",
"type": "cppdbg",
"request": "launch",
"targetArchitecture": "x64",
"program": "${workspaceRoot}/bin/hello_world",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"processId": "${command.pickProcess}",
"externalConsole": false,
"linux": {
"MIMode": "gdb"
},
"osx": {
"MIMode": "lldb"
},
"windows": {
"MIMode": "gdb"
}
}
]
}
使用流程
- 编写hello_world.cpp文件
- 设置断点
- Ctrl+shift+B进行make
- 点击左侧工具栏”调试“按钮进入调试工具区,点击绿色开始运行按钮,即可开始调试