文档章节

VS Code创建C项目

wuqingyi
 wuqingyi
发布于 2017/06/27 15:39
字数 799
阅读 566
收藏 0

1、安装VS Code,现在好像默认带了C/C++插件。

2、创建项目:可以在 文件->打开文件夹 中创建项目文件夹;

3、编写程序:
-test
--main.c
--source.c
--source.h
--.vscode
----launch.json
----tasks.json

.vscode文件夹后续由VS Code自动创建;

main.c

#include <stdio.h>
#include "source.h"

int main(void)
{
    printf("add:%d\n", add(2, 5));
    printf("sub:%d\n", sub(5, 2));
    return 0;
}

source.h

extern int add(int a, int b);
extern int sub(int a, int b);

source.c

int add(int a, int b)
{
    return a + b;
}

int sub(int a, int b)
{
    return a - b;
}

4、创建Task:Task可以用来完成很多事,不仅仅是用来编译!!!

创建一个task非常的简单.可以Ctrl+Alt+p叫出来命令行 输入task


点击接着选择Others,

就可以生成一个默认的模板. tasks.json:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "echo",
    "isShellCommand": true,
    "args": ["Hello World"],
    "showOutput": "always"
}

如果程序只有一个C文件,那么,只要修改上面模板中的command和args对应的内容即可,将echo换成gcc,将Hello World换成想要添加的参数或者放空,按Ctrl + Shit + b执行任务,就能编译出程序。

如果程序有很多个执行文件,或者需要分别编译debug和release等不同版本,或者需要有不同任务分别完成不同的功能,比如我现在有main.c、source.c和source.h等文件需要编译,我还想编译出debug和release版本。这就需要tasks关键字了:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "g++",
    "isShellCommand": true,
    "suppressTaskName": true,
    "args": [
        "${workspaceRoot}/main.c",
        "${workspaceRoot}/source.c"
    ],
    "showOutput": "always",
    "tasks": [
        {
            "taskName": "debug",
            "args": [
                "-gstabs"
            ]
        },
        {
            "taskName": "release",
            "args": []
        }
    ]
}

(args中的参数"-gstabs"表示编译的时候添加调试所需要的信息,否则调试的时候会直接运行完整个程序,不会在断点处停下来)

这里需要注意的是"suppressTaskName":
         如果suppressTaskName 为 true, 命令为 command 'global args' 'task args'.
         反之suppressTaskName 为 false, 命令为 command 'global args' taskName 'task args'.
(global args和task args分别表示tasks外面的args关键字的内容和tasks中每个任务自己的args)。

Ctrl+Shit+b这个快捷键只认 taskName 为 "build" 的那个task和全局命令。如果想运行上面的task,需要按Ctrl +Alt+p叫出来命令行,输入task,选择 运行任务,再选择想运行的task。

此外,当有不同任务分别完成不同的功能。只要将全局的command和args移到各个task中,填写相应的命令和参数就可以了。

5、将task关联到launch.json

5.1 创建launch.json:在菜单 调试->启动调试,就会提示要创建launch.json,选中C++(GDB/LLDB)

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

修改program和cwd关键字,program设置要运行/调试的程序,要与task编译出来程序的名称、路径一致。

5.2 关联

添加"preLaunchTask": "build"到Launch.json中.就可以用了. 意思就是运行/调试开始之前先执行一个Task.

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": true,
            "preLaunchTask": "debug",
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

 

© 著作权归作者所有

共有 人打赏支持
wuqingyi
粉丝 0
博文 39
码字总数 19055
作品 0
厦门
程序员
使用VS Code开发调试ASP.NET Core 1.0

原文出处:LineZero 使用VS Code开发调试ASP.NET Core 1.0,微软在今天凌晨发布了.NET Core 1.0,ASP.NET Core 1.0 与 Entity Framewok 1.0。 之前跟大家讲解过VS Code开发调试.NET Core RC2...

LineZero
2016/06/29
0
0
Microsoft 开源用于 VS Code 的 Java Debugger

Microsoft 开源用于 VS Code 的 Java Debugger 微软推出的免费的跨平台代码编辑器Visual Studio Code(称为VS Code) 为9月份发布的 Java Debugger 开源代码。VS Code 在推出时就支持原生的 ...

周其
2017/11/21
2.8K
6
EOS开发IDE工具Visual Studio code 和CLion的配置

每一个开发人员都需要一个良好的IDE,EOS开发也是一样,为项目开发过程构建一个良好的IDE环境是第一步。这就是为什么我们要写这个如何使用VS Code或者CLion进行EOS开发的快速教程的原因。 我...

编程狂魔
08/06
0
0
使用 VS Code 进行 Python 编程

Visual Studio Code,简称 VS Code,是一个开源的文本编辑器,包含用于构建和调试应用程序的工具。安装启用 Python 扩展后,VS Code 可以配置成理想的 Python 开发工作环境。本文将介绍一些有...

08%
09/08
0
0
asp.net core开发环境准备

1.1 安装sdk和运行时 浏览器打开网址https://www.microsoft.com/net/download, 到.Net Core下载页面。 根据操作系统,下载对应的SDK进行安装。安装之后可以从命令行运行dotnet命令,查看是否...

zting科技
2017/01/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringData JPA 在解析实体类字段时驼峰自动添加下划线问题

SpringData JPA 使用的默认命名策略是: ImprovedNamingStrategy 。用下划线转换驼峰名,如 authorId ,转换成 author_id 。这样就遇到了一个问题:实体中驼峰命名的列名转换成下划线后,在M...

Jacktanger
10分钟前
0
0
Android JNI开发系列(十)JNI访问 Java 实例变量和静态变量

JNI访问 Java 实例变量和静态变量 Java 中的实例变量和静态变量,在本地代码中如何来访问和修改。静态变量也称为类变量(属性),在所有实例对象中共享同一份数据,可以直接通过类名.变量名来...

蔡小鹏
15分钟前
0
0
jsapi4加载的首个图层的范围被默认作为地图范围,且不能修改的解决

在map加载的第一个图层的图层范围(fullExtent),会被默认设置为map的全图范围,且不能更改,从一般地图控件角度来说,应该有fullExtent属性,作为地图的全图范围,但很遗憾jsapi4.9还没有 ...

canneljls
15分钟前
0
0
JSON.stringify()

JSON.parse()与JSON.stringify()的区别 JSON.parse()【从一个字符串中解析出json对象】 例子: //定义一个字符串 var data='{"name":"goatling"}' //解析对象 JSON.parse(data) 结果是: na...

废柴
16分钟前
0
0
HashSet

前言 Set的实现类都是基于Map来实现的(HashSet是通过HashMap实现的)。 构造图如下: 蓝色线条:继承 绿色线条:接口实现 正文 对于HashSet而言,它是基于HashMap来实现的,底层采用HashMap来保...

狼王黄师傅
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部