1.Visual Studio Code
发展到现在已经相当稳定了.已经不想1年前的那么卡和慢.目前它有可能成为通用语言开发利器。单就说支持C/C++
的智能提醒, 函数跳转, 头文件跳转, 编辑器Debug
就很省开发时间. 还有什么理由不用它呢?
2.Sublime Text
现在功能更新的节奏也慢了下来, 也对,Sublime Text
的小团队怎么能和大团队微软相比, 而且vscode
还是免费的,功能还多,完善。
点击下载安装 Visual Studio Code
1.VSCode
让我看到了用轻量级编辑器开发C/C++
项目的希望.
1.安装C/C++
插件, 按Ctrl+Shift+P
->Extensions:Intall Extensions
,之后在左边搜索框输入C++
,选择C/C++
微软开发的版本和C++ Intellisense
austin的版本安装两个扩展.
2.新建项目, vscode
没有新建项目这一说,只需要把项目文件夹拖动到Explorer
视图里就行了. 比如我这里把test-vscode2
拖放进去。也可以通过菜单File
->Open Folder...
打开文件夹. 如果只是编译某个文件,其实连添加文件夹的步骤都不需要。最主要的是当前项目根目录下需要一个.vscode
目录.
2.在这文件夹下新建一个文件test.cpp
,当然你也可以直接在桌面右键某个cpp
文件用vscode
打开. 打开test.cpp
,输入main
根据智能提示选择main
的代码片段. 之后随便添加点输出,如下:
#include
int main(int argc, char const *argv[])
{
std::cout << "hello world" << std::endl;
return 0;
}
3.编辑完这个test.cpp
文件时候, 注意当前编辑器要显示这个test.cpp
文件,不是其他文件,接着按F5
->选择C++ (GDB/LLDB)
,会生成一个调试运行配置文件launch.json
,而且还有一个.vscode
目录,这个.vscode
就是项目配置目录,不可改名,不可删除.
单击编辑launch.json
,修改program
(编译后可执行文件路径)和miDebuggerPath
(gdb程序路径)属性,完成后的看以下的json
文件,关于属性的说明看launch.json
里的微软超链接属性说明. 之后添加一个属性preLaunchTask
来作为运行前的编译任务名build-cygwin
,我这里用cygwin
作为编译工具链, 也可以使用Mingw
作为编译工具链.
launch.json
{
// 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": "(cygwin gdb) launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\build\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment":[],
"externalConsole": false,
"preLaunchTask": "build-cygwin",
"MIMode": "gdb",
"logging": {
"moduleLoad": true,
"trace": true
},
// "windows": {"options": {"env": {"path":"C:\\Windows;C:\\Windows\\System32;E:\\software\\cygwin64\\bin"}}},
"miDebuggerPath": "E:\\software\\cygwin64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "asdfas",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
4.关于安装Mingw
作为g++
编译器工具链,这里有说明配置Mingw. 也可以直接在这里下载MinGW. 这个没什么好说的,下载了安装包直接跟着下一步走就行了.
关于安装Cygwin
的下载安装包. 这两个工具链难点就是在选择安装工具链下哪些工具,我安装Cygwin
工具链下的这些工具,注意在小三角里选择最新的版本,之后不需要下载源代码(有需要可以下): 我推荐使用cygwin
毕竟可以下载make
等构件工具,mingw
要另外找来下载.
注意: 安装cygwin
时可能会提醒Cound not download mirror sites list
. 之后下一步可以填入国内的镜像url
会快很多,比如我用的是https://mirrors.ustc.edu.cn/cygwin/
. 也可以从这里找速度快的镜像。
5.添加编译设置,点打开test.cpp
文件为当前文件, 按F5
,这时候会出现以下提醒:
点击Configure Task
,选择C/C++: cl.exe build active file
,会在.vscode
下生成一个tasks.json
文件:
6.tasks.json
是执行编译或其他任务的配置文件,当按快捷键Ctrl+Shift+B
就会出来任务名称, 选择其中的任务执行编译等操作. 我们把它改为Cygwin
或mingw
的工具链配置. 同样在这里也是可以看配置属性说明. 我这里设置了两个编译器的配置,所以添加了两个任务. 注意这里有添加属性windows
,是为了不在系统环境变量path
添加g++.exe
运行搜索路径,也可以在系统环境变量的path
里添加这个工具链bin
路径,不要两个工具链都添加到系统环境变量里,会冲突,如果只是在tasks.json
里添加,不会污染系统环境,最大程度模拟了客户的环境,因为客户电脑并没有这两个工具链:
我这里在args
参数里输出exe
添加了一个build
目录,所以需要在test-vscode2
目录下新建一个build
目录,作为输出目录. 需要自己添加, 不然会编译失败. 其中-std=c++11
是g++
的编译参数,关于c++11
我开了一个学院课程, 发布完后欢迎来学习C++11语言特性和标准库.
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"command": "g++",
"tasks": [
{
"type": "shell",
"label": "build-cygwin",
"command": "E:\\software\\cygwin64\\bin\\g++.exe",
"args": [
"-std=c++11",
"-g",
"${file}",
"-o",
"${fileDirname}\\build\\${fileBasenameNoExtension}.exe"
],
"problemMatcher": [
"$gcc"
],
"group": "build",
"windows": {"options": {"env": {"path":"E:\\software\\cygwin64\\bin"}}}
},
{
"type": "shell",
"label": "build-mingw",
"command": "E:\\software\\MinGW\\bin\\g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\build\\${fileBasenameNoExtension}.exe"
],
"problemMatcher": [
"$gcc"
],
"group": "build",
"windows": {"options": {"env": {"path":"E:\\software\\MinGW\\bin"}}}
}
]
}
7.编译文件,首先当前文件打开选择为test.cpp
,接着按ctrl+shift+b
选择build-cygwin
,就是看到编译成功,在build
目录下生成test.exe
文件. 在下边的TERMINAL
窗口能看到输出:
> Executing task: E:\software\cygwin64\bin\g++.exe -std=c++11 -g e:\Project\Sample\test-vscode2\test.cpp -o e:\Project\Sample\test-vscode2\build\test.exe <
8.运行调试exe
文件, 注意因为launch.json
并没有设置环境变量的属性,我们需要新增一个setting.json
项目全局配置文件来添加cygwin
的运行搜索目录.不然gdb
会运行失败.
选择菜单File->Preferences->Setting
,在搜索框里输入terminal.integrated.env.windows
,选择Workspace
,点击Edit in settings.json
. 会生成一个空的setting.json
文件.
完整配置,其实就是加了一个属性terminal.integrated.env.windows
:
{
"terminal.integrated.env.windows": {
"path": "C:\\Windows;C:\\Windows\\System32;E:\\software\\cygwin64\\bin"
}
}
接着打开test.cpp
文件,按F5
,会在右下角弹出,点击Allow
.
之后还需要重新F5
运行,运行成功后,可以在下边的窗口DEBUG CONSOLE
里看到输出.
9.配置头文件跳转,智能提醒. 按ctrl+shift+p
,选择->C/C++ Edit Configurations(UI)
.选择Win32
->点击Add Configuration
.会生成一个c_cpp_properties.json
文件. 这个主要是配置头文件查找目录的, cygwin
配置好的如下,配置好之后我们按住CTRL
+点击test.cpp
里的会打开相应的头文件.
{
"configurations": [
{
"name": "Linux",
"includePath": [
"E:\\software\\cygwin64\\usr\\include",
"E:\\software\\cygwin64\\lib\\gcc\\x86_64-pc-cygwin\\7.4.0\\include",
"E:\\software\\cygwin64\\lib\\gcc\\x86_64-pc-cygwin\\7.4.0\\c++",
"E:\\software\\cygwin64\\lib\\gcc\\x86_64-pc-cygwin\\7.4.0\\include\\c++\\x86_64-pc-cygwin"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"cStandard": "c11",
"cppStandard": "c++11",
"intelliSenseMode": "gcc-x64",
"compilerPath": "E:\\software\\cygwin64\\bin\\g++.exe"
}
],
"version": 4
}
注意: 增加compilerPath
是为了让vscode
支持用g++
进行实时代码智能提醒(用编译的方式).
10.最后,直接编译运行F5
。只是编译Ctrl+Shift+b
->选择build-cygwin
. 在DEBUG CONSOLE
看运行输出, 在TERMINAL
看编译输出.
11.至于多个文件的项目编译,只能通过makefile
来配置编译,关于makefile
的配置,可以看 通用Makefile配置编译选项. 更完整的通过分析头文件是否更新来编译查看从netbeans里提取的通用构建C++项目的Makefile文件.
debugging-_launch-configurations
Create a build task
c-cpp-properties-schema-reference