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

其中,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中通常可以采用两种开发工具链:
-
Microsoft C++:该工具链的安装和配置参考《Configure VS Code for Microsoft C++》;
-
GCC:该工具链的安装和配置参考《Using GCC with MinGW》。
3. Microsoft C++
3.1 生成所需文件
点击Run and Debug,

选择C++ (Windows),

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

此时不出意外的会报错,

选择Abort即可。
3.2 修改tasks.json文件
经过上述操作,在.vscode文件夹中会出现tasks.json文件,打开该文件,在args中添加如下内容:
"-g", "${workspaceFolder}\\*.c",
"-g", "${workspaceFolder}\\ucmplx\\*.c",
"-I", "${workspaceFolder}",
"-I", "${workspaceFolder}\\ucmplx",
并注释掉如下内容:
// "${file}",
如下图所示:

根据相关博文,个人对上述内容的解读如下:
-
"-g"用于添加源文件路径,类似于在IDE中添加Source Folder; -
"-I"用于添加源文件的头文件,类似于IDE中设置Include Path。
3.3 编译链接并运行
再次点击Run and Debug,

在Terminal中输出程序运行结果。

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

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

经过上述操作,在.vscode文件夹中会出现tasks.json文件。
4.2 修改tasks.json文件
打开tasks.json文件,在args中添加如下内容:
"-g", "${workspaceFolder}\\*.c",
"-g", "${workspaceFolder}\\ucmplx\\*.c",
"-I", "${workspaceFolder}",
"-I", "${workspaceFolder}\\ucmplx",
并注释掉如下内容:
// "-g",
// "${file}",
如下图所示:

4.3 编译链接并运行
点击此即可,

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

同样在Terminal中即可查看程序运行结果。
参考文献
[1] 萧筱姐姐. windows上实现vscode编译多个c源文件. 2023.11.16. https://zhuanlan.zhihu.com/p/419473501
Provided by 昨夜三更雨, see https://www.cnblogs.com/zysgy/p/17837404.html
浙公网安备 33010602011771号