[版权声明] 本站内容采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆 (CC BY-NC-SA 3.0 CN) 进行许可。
部分内容和资源来自网络,纯学习研究使用。如有侵犯您的权益,请及时联系我,我将尽快处理。
如转载请注明来自: Broly的博客,本文链接: VSCode+CPP开发环境
准备开始转向用VSCode做开发,所以把一些常用的开发环境转移到VSCode上。
这篇介绍关于C++的开发环境。博主打算就是中小型的不涉及界面的就用VSCode开发C++,如果涉及windows界面的还是用Visual Studio这种IDE比较好。
其他相关博文:
一、测试环境
- Windows 8.1
- VSCode v1.11.1
- tdm-gcc v5.1.0
二、安装Visual Studio Code
去官网下载VSCode并安装: https://code.visualstudio.com/Download
三、安装VSCode的C++插件
在VSCode上搜索插件C++,找到作者是Microsoft的,安装即可。
或者Ctrl+P,再输入ext install cpptools 进行安装。
四、安装TDM-GCC
VSCode默认不带编译和调试环境的,需要自行安装编译器等。
我选用的是TDM-GCC编译套件,方便易用。(Codeblocks、Dev-Cpp等默认带的都是这款)。
下载地址:http://tdm-gcc.tdragon.net/download
根据自己的情况下载安装即可,会自动添加路径到环境变量PATH。
五、配置VSCode
安装好插件之后,在磁盘新建好自己的工作目录,比如我的是D:\Dev\DevCpp,在VSCode的资源管理器中打开这个目录,
按F5,打开launch.json文件,编辑并保存:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
{ "version": "0.2.0", "configurations": [ { "name": "C++ Launch (GDB)", // 配置名称,将会在启动配置的下拉菜单中显示 "type": "cppdbg", // 配置类型,这里只能为cppdbg "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加) "launchOptionType": "Local", // 调试器启动类型,这里只能为Local "targetArchitecture": "x86", // 生成目标架构,一般为x86或x64,可以为x86, arm, arm64, mips, x64, amd64, x86_64 "program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径 "miDebuggerPath": "gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应。64位系统用gdb64.exe "args": [ "" ], // 程序调试时传递给程序的命令行参数,一般设为空即可 "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,我一般设置为true "cwd": "${workspaceRoot}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录 "externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台 "preLaunchTask": "g++" // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc } ] } |
按F1键,出来输入框后,输入task,选择“配置任务运行程序”,再随便选一项,编辑并保存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 |
{ "version": "0.1.0", "command": "g++", "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}.exe" ], // 编译命令参数 "problemMatcher": { "owner": "cpp", "fileLocation": [ "relative", "${workspaceRoot}" ], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } } |
在.vscode目录下新建文件c_cpp_properties.json,编辑并保存:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{ "configurations": [ { "name": "Win32", "includePath": [ "D:/Program Files/TDM-GCC-64/include", "D:/Program Files/TDM-GCC-64/x86_64-w64-mingw32/include", "D:/Program Files/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include", "D:/Program Files/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++" ], "browse": { "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" } } ], "clang_format": { "style": "file", "fallback-style": "LLVM", "sort-includes": false } } |
其中includePath项的路径更改为你安装的TDM-GCC的实际路径,这一项是让VSCode识别到C++的头文件,不然找不到的时候会报错,编译不成功。
六、调试C++程序
新建main.cpp文件,编辑并保存:
1 2 3 4 5 6 7 8 9 10 11 |
#include <iostream> using namespace std; int main() { int var = 100; cout << "Hello " << var << endl; return 0; } |
在return 0处下断点,按F5进行调试(如果环境变量还没生效,重启下就好):
七、使用Make编译工程(可选)
如果使用g++不能满足需求,还可以选择Make进行工程编译,
按F5,打开launch.json文件,编辑并保存:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
{ "version": "0.2.0", "configurations": [ { "name": "C++ Launch (GDB)", // 配置名称,将会在启动配置的下拉菜单中显示 "type": "cppdbg", // 配置类型,这里只能为cppdbg "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加) "launchOptionType": "Local", // 调试器启动类型,这里只能为Local "targetArchitecture": "x86", // 生成目标架构,一般为x86或x64,可以为x86, arm, arm64, mips, x64, amd64, x86_64 "program": "${fileDirname}/main.exe", // 将要进行调试的程序的路径 "miDebuggerPath": "gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应。64位系统用gdb64.exe "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可 "stopAtEntry": true, // 设为true时程序将暂停在程序入口处,我一般设置为true "cwd": "${workspaceRoot}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录 "externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台 "preLaunchTask": "build" // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc } ] } |
编辑并保存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 33 34 35 36 37 38 39 40 41 42 43 |
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "0.1.0", "command": "mingw32-make", "isShellCommand": true, "isBuildCommand": true, "showOutput": "always", "echoCommand": true, "suppressTaskName": true, "options": { "cwd": "${fileDirname}" }, "tasks": [ { "taskName": "build", "args": [ "all" ] }, { "taskName": "clean", "args": [ "clean" ] } ], "problemMatcher": { "owner": "cpp", "fileLocation": [ "relative", "${workspaceRoot}" ], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } } |
在工程目录下新建Makefile文件:
1 2 3 4 |
all: g++ -static -g -o main.exe classdemo.cpp main.cpp clean: del /f *.o main.exe |
然后建立三个工程文件做测试:
classdemo.h
1 2 3 4 5 6 7 8 9 |
#ifndef CLASSDEMO_HPP #define CLASSDEMO_HPP class Classdemo { public: void greet(); }; #endif |
classdemo.cpp
1 2 3 4 5 6 |
#include "classdemo.h" #include <iostream> void Classdemo::greet() { std::cout << "Hello" << std::endl; } |
main.cpp
1 2 3 4 5 6 7 8 9 |
#include "classdemo.h" int main() { Classdemo classdemo; classdemo.greet(); return 0; } |
测试结果:
八、格式化工具ClangFormat的配置
这个插件自带的格式化工具ClangFormat,如果不自己配置好文件好像会有点问题,所以要自己处理下。
先找到clang-format.exe文件,位于:
1 |
%USERPROFILE%\.vscode\extensions\ms-vscode.cpptools-0.10.5\LLVM\bin |
在命令提示符下,执行:
1 2 3 |
cd /d %USERPROFILE%\.vscode\extensions\ms-vscode.cpptools-0.10.5\LLVM\bin clang-format -style=llvm -dump-config > .clang-format |
这样就可以生成LLVM风格的配置文件.clang-format,把这个文件剪切到VSCode的CPP工程目录,下次格式化代码就没问题了。其他格式化风格的,看官网文档:Configurable Format Style Options
参考链接:
《Visual Studio Code如何编写运行C、C++?》
《windows 10环境下 使用 msys2 + vs code 配置 c++ 的编译环境》
《【VSCode】Windows下VSCode编译调试c/c++》
《配置VSCode》
《VSCode+CPP开发环境》有3个想法