Linux 下的VSCode C++配置

Visual Studio Code编辑时的常用快捷键

F1或Ctrl+Shift+P    打开VS Code的命令Shell
Ctrl+P    打开VS code文件/符号查询窗口,输入”>”可以进入F1同样的Shell
Ctrl+Shift+O    查找符号,函数,属性
Ctrl+G    跳转到某行
Ctrl+[    代码缩进
Ctrl+]    代码往前移进
Ctrl+F    查找文本
Ctrl+H    查找替换
Ctrl+Shift+F    整文件夹中查找
Ctrl+ +    放大文本
Ctrl+ -    缩小文本
Ctrl+ Home    移动到文件头
Ctrl+ End    移动到文件尾
Ctrl+ Tab    在多个文件之间切换
Ctrl+ /    注释/解注释鼠标选中的代码块
Ctrl+ \    切分当前窗口
Ctrl+ N    新建文件
F12    跳转到变量,函数,类型定义
Alt+鼠标点击    连续选中多个文本,同时编辑
Alt+F12    查找所有对当前变量,函数,类型的引用
Alt+<-方向键    跳回到上一视图
Alt+上下方向键    上下移动当前光标所在行
Shift+Alt+上下方向键    向上/向下复制一行
Ctrl+Enter    在当前行下边插入一行
Ctrl+Shift+Enter    在当前行上方插入一行
Alt+Shift+鼠标左键    列编辑

关于在ubuntu中用vscode编译调试C\C++

必须安装的包

# 安装必须的包
sudo apt-get install build-essential
sudo apt-get install cmake git gcc g++

.vscode文件中包含了关于VSCode编辑器的一些配置文件。

  • c_cpp_properties.json文件中主要是配置头文件查找路径,当使用到第三方库,比如Boost,OpenCV等,就需要在这个文件中添加这些库的头文件路径。
  • setting.json文件对当前的工程进行了一些配置。
  • build是cmake构建工程是产生的,里面包含了cmake产生的所有内容。
  • CMakeLists.txt是整个工程的核心,它定义了整个工程的编译流程。

配置文件参考

c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "/usr/include",
                "/usr/local/include",
                "${workspaceFolder}"
            ],
            "defines": [],
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "/usr/include",
                    "/usr/local/include",
                    "${workspaceFolder}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            },
            "macFrameworkPath": [
                "/System/Library/Frameworks",
                "/Library/Frameworks"
            ],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17"
        },
        {
            "name": "Linux",
            "includePath": [
                "/usr/include",
                "/usr/local/include",
                "${workspaceFolder}",
                "/usr/include/linux",
                "/usr/include/c++/7/tr1",
                "/home/azmddy/Downloads/boost_1_68_0"
            ],
            "defines": [],
            "intelliSenseMode": "gcc-x64",
            "browse": {
                "path": [
                    "/usr/include",
                    "/usr/local/include",
                    "${workspaceFolder}",
                    "/home/azmddy/Downloads/boost_1_68_0"
                ],
                "limitSymbolsToIncludedHeaders": false,
                "databaseFilename": ""
            },
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "compileCommands": "${workspaceFolder}/build/compile_commands.json"
        },
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "C:\\MinGW\\bin\\gcc.exe",
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "${workspaceFolder}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            },
            "cStandard": "c11",
            "cppStandard": "c++17"
        }
    ],
    "version": 4
}
View Code

tasks.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build", //相当与名字,与后面launch.json中preLaunchTask参数要保持一致
            "type": "shell",
            "command": "g++", 
            "args": [     //编译所需要的参数,包括编译方式,源文件,和生成的可执行文件
                "-g",
                "-Wall",
                "-std=c++17",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "presentation": {   //控制终端显示
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared",
                "showReuseMessage": false,
                "clear": true
            },
        },
        {
            "label": "run",
            "type": "shell",
            "dependsOn": ["build"], //依赖的配置,运行之前需要编译链接形成可执行文件
            "command": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "presentation": {   //控制终端显示
                "echo": false,  // 执行命令是否输出到集成终端
                "reveal": "always",
                "focus": false,
                "panel": "shared", //控制是否共享面板
                "showReuseMessage": false, //是否显示"终端终端将被重用,是否显示"的提示
                "clear": true  //执行任务前是否清除终端
            },
            //"problemMatcher": [],
            "group": {           
                "kind": "test", 
                "isDefault": true
            }
        }
    ]
}
View Code

launch.json

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}", //程序可执行文件的路径
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}", 
            "environment": [],
            "externalConsole": false, //设为false时使用集成终端,true为外置终端
            "linux": {
                "MIMode": "gdb",
                "miDebuggerPath": "/usr/bin/gdb"
            },
            "windows": {
                "MIMode": "gdb",
                "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe"
            },
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build"
        }
    ]
}
View Code

setting.json

{
    "C_Cpp.default.cppStandard": "c++14",
    "C_Cpp.intelliSenseEngineFallback": "Enabled",
    "C_Cpp.errorSquiggles": "Disabled",
    "editor.mouseWheelZoom": true,
    "files.autoSave": "afterDelay",
    "files.autoSaveDelay": 100,
    "editor.tabCompletion": "on",
    "files.useExperimentalFileWatcher": true,
    "files.associations": {
        "iostream": "cpp",
        "*.tcc": "cpp"
    },
    "cmake.debugConfig": {
        "externalConsole": true
    },
    "cmake.configureOnOpen": true,
    "cmake-tools-helper.cmake_download_path": "/home/undefined/.vscode/extensions/maddouri.cmake-tools-helper-0.2.1/cmake_download",
    "explorer.confirmDelete": false
}
View Code

CMakeLists.txt

# CMake 最低的版本要求
cmake_minimum_required(VERSION 3.12.0)

# 定义项目名称变量PROJECT_NAME, 默认值为demo
set(PROJECT_NAME demo)

# 项目名称以及版本
project(${PROJECT_NAME} VERSION 0.1.0)

# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)

# 设置C++的版本
set(CMAKE_CXX_STANDARD 14)

# 指定生成目标
add_executable(${PROJECT_NAME} ${DIR_SRCS})

##############################################################################################################
###################################     有关第三方库的使用     ###############################################

############################################## OpenCV ########################################################
# 设置OpenCVModule的路径
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "/home/undefined/Downloads/opencv-3.4.1/build")
# 查找 OpenCV3.4.1的头文件和库文件路径以及库文件
find_package(OpenCV 3.4.1 REQUIRED)
# 包含OpenCV头文件目录
include_directories(${OpenCV_INCLUDE_DIRS})
message("OpenCV_INCLUDE_DIRS: ${OpenCV_INCLUDE_DIRS}")
message("OpenCV_LIBS: ${OpenCV_LIBS}")
# 链接OpenCV库文件
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
##############################################################################################################

############################################## Boost #########################################################
# 查找 Boost_1_68_0的特定的库
find_package(Boost 1.68.0 REQUIRED COMPONENTS regex)
# 包含Boost头文件目录
include_directories(${Boost_INCLUDE_DIRS})
message("Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS}")
message("Boost_LIBRARIES: ${Boost_LIBRARIES}")
# 链接Boost库文件
target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})
##############################################################################################################

############################################## OpenGL ########################################################
# opengl 头文件路径保存在 OPENGL_INC_DIR 变量
set(OPENGL_INC_DIR /usr/local/include /usr/include /usr/include/GL)
# opengl 链接库路径保存在 OPENGL_LDFLAGS 变量
set(OPENGL_LDFLAGS /usr/local/lib /usr/lib64)
# opengl 链接库名称保存在 OPENGL_LIBS 变量
set(OPENGL_LIBS GL GLU glut GLEW gltools glfw3 X11 Xxf86vm Xrandr pthread Xi dl Xinerama Xcursor m)
# OpenGL头文件目录
include_directories(${OPENGL_INC_DIR})
# OpenGL库文件目录
link_directories(${OPENGL_LDFLAGS})
# 链接OpenGL库文件
target_link_libraries(${PROJECT_NAME} ${OPENGL_LIBS})
###############################################################################################################
View Code

VScode 编译运行单个c++文件

  1. 安装vscode的C\C++插件。
  2. 配置launch.json和task.json这两个文件
  3. 编译调试C++程序
  4. (注意以上过程请确保在ubuntu里面安装了c++编译器,和vscode) 

第一步 在vscode中安装C++的插件

编辑test.cpp文件

#include <iostream>
using namespace std;

int main(int argc,char* argv[])
{
    cout << "Hello, world!" << endl;
    return 0;
}

在test.cpp文件中,ctrl + shift + p 快捷键, 操作完后vscode会自动创建launch.json和tasks.json

 

 

本次配置文件示例

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": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build"
        }
    ]
}
View Code

 

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "build",
            "command": "/usr/bin/g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "/usr/bin"
            }
        }
    ]
}
View Code

 

c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}
View Code

 

VSCode运行多文件C++教程:使用CMake

原文地址:https://blog.csdn.net/frostime/article/details/86756983

CMake是什么

你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作。

CMake就是针对上面问题所设计的工具:它首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而做到“Write once, run everywhere”。显然,CMake 是一个比上述几种 make 更高级的编译配置工具。一些使用 CMake 作为项目架构系统的知名开源项目有 VTK、ITK、KDE、OpenCV、OSG 等。

一般使用 CMake 生成 Makefile 并编译的流程如下:

  • 编写 CMake 配置文件 CMakeLists.txt
  • 执行命令 cmake PATH 或者 ccmake PATH 生成 Makefile(ccmake 和 cmake 的区别在于前者提供了一个交互式的界面),其中, PATH 是 CMakeLists.txt 所在的目录
  • 使用 make 命令进行编译

CMakeLists语法

cmake_minimum_required   用于设置最低版本号要求, 需要放在文件最开头位置。

语法格式为:

cmake_minimum_required(VERSION <min>[...<max>] [FATAL_ERROR])

project(Main)      Sets project details such as name, version, etc. and enables languages

语法格式为:

project(<PROJECT-NAME> [LANGUAGES] [<language-name>...])

project命令会创建一些相关变量,例如:

  • PROJECT_SOURCE_DIR: 整个项目的根目录,即包含PROJECT()的最近一个CMakeLists.txt文件所在的目录
  • PROJECT_BINARY_DIR: Build路径,在这里就是 **、Demo1/Build

set()用于设置变量的值
语法格式为:

set(<variable> <value>... [PARENT_SCOPE])

如果<variable>不存在,那就回创建一个新的变量, 不过这里的变量是系统预定义的变量。

CMAKE_CXX_COMPILER,指的是C++的编译器,准确来讲它应该是以CMAKE_<LANG>_COMPILER 为模版的一个实例, <LANG>指的是语言,官方对它的解释是:

The full path to the compiler for LANG

比如如果我们想要设置C语言的编译器,那就是 CMAKE_C_COMPILER, 而C++的就是 CMAKE_CXX_COMPILER。

为什么C++在这里是CXX? 这就涉及到不同平台下C++程序的后缀名问题了,在Windows下我们常用的就是一个.cpp扩展名,但在其他标准中,还有很多种不同扩展名,比如 C cc cxx 等等都是C++文件的扩展名, 详情见C++后缀名的问题。

另外一个是CMAKE_CXX_FLAGS,它指的是编译的可选参数,同样,它也是CMAKE_<LANG>_FLAGS的一个实例,这里我们设置了 -g 参数,表明保留调试信息。

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")

message() 函数可以把参数代表的值打印出来:

 ${CMAKE_CXX_FLAGS}:${<variable>} 指的就是取变量的值

message(${CMAKE_CXX_FLAGS}) # 输出 -g
message(${PROJECT_SOURCE_DIR})  # 输出 E:/my_programming/Demo1

add_executable(Demo1 main.cpp)   该命令指定了将源文件输出到可执行文件 <name>,比如在Windows平台上,就会生成一个 <name>.exe 文件

语法格式为:

add_executable(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL]  [source1] [source2 ...])

默认情况下,可执行文件将会在Build路径下被创建。如果要改变这个位置,有很多种办法,最简单的是修改 EXECUTABLE_OUTPUT_PATH 变量的值,比如:

# 设置exe文件输出的 Bin 目录下

set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/Bin)

aux_source_directory          Collects the names of all the source files in the specified directory and stores the list in the <variable> provided.

aux_source_directory(<dir> <variable>)

要注意的是,这里强调了只有源文件才会被加入,比如在这个例子中,只有 a.cxx b.cxx 被加入了,而其余的 a.h CMakeLists.txt 都不会被加进去。

额外说明

  • 之所以使用一个Build目录就是因为cmake出来的东西太多,最好放到一个专门的目录下
  • cmake 的格式是 cmake <dir> , 其中 <dir> 中必须有 CMakeLists.txt 文件
  • 由于我现在是在Windows下, 如果直接使用 cmake .. 会默认使用 Visual Studio 的编译器,可以通过 -G 指定,这里我们使用的是MinGW
  • make 程序在Windows上没有,可以使用 MinGW 中的 bin/mingw32-make.exe 替代,比如我们可以复制一份此程序,然后改名为 make.exe

项目目录结构

Demo1
├── bin
│   └── Demo1
├── build
│   └── ... 
├── build.sh
├── CMakeLists.txt
├── include
│   └── Human.h
└── src
    ├── Human.cpp
    └── main.cpp

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": "g++ build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            // "program": "${fileDirname}/bin/${fileBasenameNoExtension}",
            "program": "${workspaceFolder}/bin/Demo1",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "compile",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}
View Code

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "compile",
            "type": "shell",
            "command": "${workspaceFolder}/build.sh",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}
View Code

Human.h

#ifndef __HUMAN_H__
#define __HUMAN_H__
#include <iostream>
namespace ztf{
    class Human{
        public:
            Human(){
                std::cout << "construct human..." << std::endl;
                age=0;
                sex=0;
            };
            ~Human(){
                std::cout << "destruct human..." << std::endl;
            }

        public:
            void setAge(int a);
            int getAge();

            void setSex(int s);
            int getSex();

        private:
            int age;
            int sex; // 0:male, 1:female
    };
} // namespace
#endif
View Code

Human.cpp

#include <iostream>
#include "Human.h"

namespace ztf{
    void Human::setAge(int a){
        age = a;
    }
    int Human::getAge(){
        return age;
    }
    void Human::setSex(int s){
        sex = s;
    }
    int Human::getSex(){
        return sex;
    }
}
View Code

main.cpp

#include <iostream>
#include "Human.h"

int main(int argc,char* argv[]){
    ztf::Human human;
    human.setAge(1);
    human.setSex(1);
    std::cout << human.getSex() << std::endl;
}
View Code

build.sh

cd build
cmake -G "Unix Makefiles" .. > TriffleInfo
make

CMakeLists.txt

cmake_minimum_required (VERSION 2.8)  # CMake 最低版本号要求
project(c_code)  #项目名称, 参数值是 Demo1, 该命令表示项目的名称是 Demo1
set(CMAKE_CXX_COMPILER "g++")  # 显示指定使用的C++编译器 
set (CMAKE_CXX_FLAGS  "-g -fexec-charset=GBK")
include_directories(${PROJECT_SOURCE_DIR}/include)
aux_source_directory(./src SrcFiles)
set(EXECUTABLE_OUTPUT_PATH  ${PROJECT_SOURCE_DIR}/bin)
add_executable(Demo1 ${SrcFiles})  # 指定生成目标
View Code

关于在win10中用vscode编译调试C\C++

原文地址:https://www.jianshu.com/p/8933ebdac814

使用 VSCode 搭建 C/C++ 开发环境

前言

本人虽然最近偏向Java语言,但平常有时也会遇到需要临时调试些C/C++代码,虽然电脑装了VS又感觉有点大材小用,而我平常一直是在用VSCode写markdown等,实际上VSCode和Sublime、Notepad++等都有很多插件可以装,装完就可以当作“短小精悍”的IDE啦,下面就记录下前天在Win10下用VSCode搭建C/C++环境的过程。

环境

搭建过程

安装C/C++插件

在 VSCode 左侧第5个插件商店下面搜索C/C++,出现第一个插件应该就是微软官方插件,长这样:

测试代码

  • 新建项目文件夹 VSC-CPP 并编写如下源文件

    • add.h // add() 函数声明
    • add.cpp // add() 函数实现
    • sub.h // sub() 函数声明
    • sub.cpp // sub() 函数实现
    • main.cpp // 调用 add() 与 sub()
  • add.h

    #ifndef _ADD_H_
    #define _ADD_H_
    int add(int a, int b);
    #endif // ! _ADD_H_
    
  • add.cpp

    #include "add.h"
    int add(int a, int b) { return a + b; }
    
  • sub.h

    #ifndef _SUB_H_
    #define _SUB_H_
    int sub(int a, int b);
    #endif // ! _SUB_H_
    
  • sub.cpp

    #include "sub.h"
    int sub(int a, int b) { return a - b; }
    
  • main.cpp

    复制代码
    #include "add.h"
    #include "sub.h"
    #include <iostream>
    
    int main() {
        std::cout << add(1, 2) << std::endl;
        std::cout << sub(2, 1) << std::endl;
        return 0;
    }
    复制代码

     

修改默认配置文件

  1. 按 ctrl+shift+p,在上面出现的框里输入c/cpp,点击C/Cpp:Edit Configurations项编辑配置文件 c_cpp_properties.json,里面很多是自动生成的,主要对应平台(Win32,因为是Windows)修改下面几项即可:

    具体这样修改的原因,可以参见 vscode-cpptools github提供的模板,本人参考网上配置文件修改后会出现找不到include的文件等如下问题:
    #include errors detected ... cannot open source file "iostream #1041
    Namespace std has no member cin, cout - Windows #1724

    最终解决办法都是采用官方提供的配置文件模板 MinGW.md,大家根据自己MinGW实际路径修改即可

  2. 上一步解决了代码提示问题,接下来按 ctrl+shift+p,输入 Tasks: Configure Task,弹出窗口中选择 Others (这里我们要用 GCC 来编译),在新打开的 tasks.json 中配置如下(其它情况可视具体情况配置):

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++",
            "args": [
                "main.cpp",
                "add.cpp",
                "sub.cpp",
                "-o",
                "main.exe"
            ],
            "problemMatcher": []
        },
        {
            "label": "build-debug",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "main.cpp",
                "add.cpp",
                "sub.cpp",
                "-o",
                "debug.exe"
            ]
        }
    ]
}

 

即我们添加了两个任务,一个是build,一个是build-debug

编译与执行

  1. 按 ctrl+shift+p,输入并选择 Tasks: Run Task,这时会看到出现两个tasks,直接回车选第一个会看到项目文件夹下生成了main.exe:

  2. 在VSCode终端下运行即可得到程序结果:

 

推荐网址

C++官方调试文档 https://code.visualstudio.com/docs/languages/cpp#_debugging
总的官方调试文档 https://code.visualstudio.com/docs/editor/debugging

Visual Studio Code官方资源
编辑C++文件: http://code.visualstudio.com/docs/languages/cpp
写VS Code扩展插件:https://code.visualstudio.com/docs/extensions/example-hello-world

版权声明:本文为CSDN博主「孙悟空CN」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lidong_12664196/article/details/68928136

博主「码上看世界」:关于vscode使用第三方库
原文链接:https://blog.csdn.net/qq_34347375/article/details/84820370

版权声明:本文为CSDN博主「Chiva Chen」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/q932104843/article/details/51924900

posted @ 2019-10-07 11:24  逐梦客!  阅读(3035)  评论(0编辑  收藏  举报