VS Code中C开发多源文件的编译设置

发布时间 2023-11-16 22:10:52作者: 昨夜三更雨

1. 引言

C开发中,通常需要编译多个文件,本文将简要介绍在VS Code中进行C开发时如何编译多个文件。实例工程结构如图所示:

image

其中,main.c文件内容如下:

#include "stdio.h"

/* Includings */
#include "umath.h"
#include "ucmplx.h"

int main(void)
{
    /* Test umath.c */
    float x = 1.21F, y;
    y = 1.0F / umath_invsqrt(x);
    printf("y = %F\r\n", y);
    /* Test ucmplx.c */
    float re1 = 2, im1 = 0, re2 = 1, im2 = 9, re, im;
    ucmplx_add(&re, &im, re1, im1, re2, im2);
    printf("(%F + %Fi) + (%F + %Fi) = %F + %F\r\n", re1, im1, re2, im2, re, im);
    return 0;
}

umath_invsqrt函数定义在umath.c中,ucmplx_add函数定义在ucmplx.c中。

2. 开发环境

在VS Code中通常可以采用两种开发工具链:

3. Microsoft C++

3.1 生成所需文件

点击Run and Debug

image

选择C++ (Windows)

image

选择cl.exe作为编译器(Compiler),

image

此时不出意外的会报错,

image

选择Abort即可。

3.2 修改tasks.json文件

经过上述操作,在.vscode文件夹中会出现tasks.json文件,打开该文件,在args中添加如下内容:

"-g", "${workspaceFolder}\\*.c",
"-g", "${workspaceFolder}\\ucmplx\\*.c",
"-I", "${workspaceFolder}",
"-I", "${workspaceFolder}\\ucmplx",

并注释掉如下内容:

// "${file}",

如下图所示:

image

根据相关博文,个人对上述内容的解读如下:

  • "-g"用于添加源文件路径,类似于在IDE中添加Source Folder;

  • "-I"用于添加源文件的头文件,类似于IDE中设置Include Path。

3.3 编译链接并运行

再次点击Run and Debug

image

Terminal中输出程序运行结果。

image

4. GCC

4.1 生成所需文件

以下给出另一种生成tasks.json文件的方法。点击“小齿轮”,

image

选择gcc.exe作为编译器(Compiler),

image

经过上述操作,在.vscode文件夹中会出现tasks.json文件。

4.2 修改tasks.json文件

打开tasks.json文件,在args中添加如下内容:

"-g", "${workspaceFolder}\\*.c",
"-g", "${workspaceFolder}\\ucmplx\\*.c",
"-I", "${workspaceFolder}",
"-I", "${workspaceFolder}\\ucmplx",

并注释掉如下内容:

// "-g",
// "${file}",

如下图所示:

image

4.3 编译链接并运行

点击此即可,

image

选择gcc.exe作为编译器(Compiler),

image

同样在Terminal中即可查看程序运行结果。

参考文献

[1] 萧筱姐姐. windows上实现vscode编译多个c源文件. 2023.11.16. https://zhuanlan.zhihu.com/p/419473501