Visual Studio Code C++多文件编译运行
笔者在C++ PrimerPlus的学习过程中遇到了多个源文件编译运行的问题,由于笔者使用的是VSCode,软件本身并不支持多个源文件编译运行,可以通过一些方法来使VsCode支持多文件编译运行。笔者经研究发现,有三种方法:分别是基于g++命令、基于Cmakelist方法、以及最简单的安装工程插件法,第二种方法可以加深对编译过程的理解和VsCode的json配置文件的理解,推荐大家可以尝试试一下。
本文以一个交换函数为示例,演示了这三种方法。
Vscode工作区目录如下:
其中各文件内容如下:
头文件:
void swap(int &a, int &b);
主函数源码文件:
#include<iostream> #include"swap.h" using namespace std; int main() { int val1 = 10; int val2 = 20; cout << "Before swap:\n"; cout << "val1 = " << val1; cout << ", val2 = " << val2 << endl; swap(val1, val2); cout << "after swap:\n"; cout << "val1 = " << val1; cout << ", val2 = " << val2 << endl; return 0; }
交换函数源码文件:
// swap.cpp #include"swap.h" void swap(int &a, int &b) { int temp; temp = a; a = b; b = temp; }
1.基于g++命令
1.1 打开终端,点击菜单去终端的新建终端,打开终端窗口;
1.2 g++编译多文件,生成带调试信息的可执行文件
命令如下:
g++ -g .\main.cpp .\swap.cpp -o main
其中 -g 后面是两个源代码文件的名称,-o 后面是生成exe文件的名称
执行后会生成一个exe文件
如图所示:
1.3 直接在终端运行该文件,命令为:
.\main.exe
运行结果如下:
1.4 要想调试该函数,需要修改launch.json文件。
点击运行调试会产生一个tasks.json文件,一个launch.json文件,但无法成功调试,如图所示:
点击open'launch.json',修改文件,该文件中有两个关键参数,一个是program:另一个是preLaunchTask:如下图所示:
将preLaunchTask:注释掉,该行会在调试前运行tasks.json,先注释掉,将program:的参数修改成
"program": "${workspaceFolder}/main.exe",
修改后如下图所示:
点击运行调试,发现可以调试运行。
2. 基于Cmakelist
该方法需要安装cmake环境,安装方法可以参考这位大佬的教程
安装cmake教程
2.1 编写最简单的CMakeLists.txt
project(MYSWAP) // 工程名 add_executable(my_cmake_swap main.cpp swap.cpp) // 生成exe文件名,需要编译的源函数文件名称
编写完保存之后会生成一个build文件夹,里面包括编译文件所需的一些信息。
2.2 生成build文件夹之后在终端输入cd build,进入该文件夹
2.3 在命令行输入cmake ..
注:如果电脑上已经安装了VS,应该会调用微软MSVC编译器,使用(cmake -G "MinGW Makefiles" ..)代替(cmake ..)即可
仅第一次使用cmake时使用(cmake -G "MinGW Makefiles" ..) 后面可使用(cmake ..)
结果如下:
2.4 接着在命令行输入mingw32-make.exe,编译文件链接文件,之后的结果如下:
生成 my_cmake_swap.exe文件在build目录下,如下图所示:
2.5 修改launch.json文件,和第一中方法一样,修改program:
修改的代码如下:
"program": "${workspaceFolder}/build/my_cmake_swap.exe",
接下来运行文件,运行结果如下:
2.6 该代码可以调试文件,但是在修改源代码文件之后,直接运行,文件并不会重新编译,要相解决这个问题,重新编写tasks.json文件。重新编写的tasks.json的文件如下:
{ "version": "2.0.0" ,// 多文件编译的tasks "options": { "cwd": "${workspaceFolder}/build" }, "tasks": [ { "type": "shell", "label": "make", "command": "cmake", "args": [ ".." ] }, { "label": "make", "group": { "kind": "build", "isDefault": true }, "command":"mingw32-make.exe", "args": [ ] }, { "label": "Build", "dependsOn":[ "cmake", "make" ] } ] }
2.7 修改完tasks.json文件,还需要修改launch.json文件的preLaunchTask:这一行,修改为"preLaunchTask": "Build"便可将文件链接起来,修改如下图所示:
3. 安装C/C++ Project Generator插件,如下图所示:
该插件会自动帮我们完成CMakeList文件的编写以及json文件的修改。
3.1 按下crtl+shift+p,输入create,找到Create C++ project,如下图所示:
点击它,产生一个选择文件夹的窗口,选择或者创建一个C++项目文件夹。
创建后如下图所示:
3.2 在include文件夹添加头文件,在src文件夹添加源函数文件,然后运行就可以
注:主函数的文件必须命名为main.cpp
如下图所示:
点击调试运行,就可以完成。
总结:
VsCode的自定义功能很强大,通过实现其多个文件编译运行,是我对C++的文件单独编译运行有了一个比较深刻的认识,中间也遇到了很多问题,最终查找解决的这些问题,特别感谢bilibili的一个视频,让我入门了Cmakelist,大家想看的话,视频链接如下:
VsCode环境配置及多文件编译运行
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程