VS Code创建C项目
博客专区 > wuqingyi 的博客 > 博客详情
VS Code创建C项目
wuqingyi 发表于4个月前
VS Code创建C项目
  • 发表于 4个月前
  • 阅读 223
  • 收藏 0
  • 点赞 0
  • 评论 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
                }
            ]
        }
    ]
}

 

共有 人打赏支持
粉丝 0
博文 21
码字总数 15826
×
wuqingyi
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: