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

您所在的位置:网站首页 vs怎么新建c语言 VS Code中C开发多源文件的编译设置

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

2024-07-16 21:08| 来源: 网络整理| 查看: 265

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中通常可以采用两种开发工具链:

Microsoft C++:该工具链的安装和配置参考《Configure VS Code for Microsoft C++》;

GCC:该工具链的安装和配置参考《Using GCC with MinGW》。

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

Provided by 昨夜三更雨, see https://www.cnblogs.com/zysgy/p/17837404.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3