【Linux】vscode环境配置测试、调试分文件编写

VSCode C++ 多文件编译
环境配置
VsCode如何使用国内镜像秒下载

1.单同一个文件夹下包含头文件编写实现

【Linux】vscode环境配置测试、调试分文件编写_第1张图片
头文件+源文件在一个文件夹中
launch.json是调试的配置,tasks.json是编译的配置,调试运行需要用到,如果是终端用cmake编译都不需要
只需要c_cpp_properties.json来起一个找文件路径和智能提示的作用,还能取消报红

ctrl+shift+p进行配置和调试的修改

【Linux】vscode环境配置测试、调试分文件编写_第2张图片
【Linux】vscode环境配置测试、调试分文件编写_第3张图片
出现错误:
【Linux】vscode环境配置测试、调试分文件编写_第4张图片
原因:
vscode的C/C++插件 默认情况 下只能编译调试一个cpp文件。
当加上一个自己写的头文件的时候,如果头文件中的函数定义就在头文件中实现的时候,vscode也一样可以编译调试。
但是当我们将头文件中声明的函数在源文件中实现的时候,vscode找不到func.cpp源文件了,所以会报错main.cpp中未定义。

解决方法:
修改tasks.json文件中的"args"[] 中的-g包含的cpp文件

args下有三个重要的配置:

  1. -g:参与调试的cpp文件
  2. -I:参与调用的头文件
  3. -o:生成的可执行文件(比如:win下是exe…)

【Linux】vscode环境配置测试、调试分文件编写_第5张图片
这里的法则是:
加上func.cpp的编译就可以了
*.cpp是模糊搜索,所有cpp的文件都参与调试
【Linux】vscode环境配置测试、调试分文件编写_第6张图片

2.分文件夹编写

在主文件下创建两个文件夹,一个include包含头文件,一个是src包含源文件
【Linux】vscode环境配置测试、调试分文件编写_第7张图片

这时运行发现,出现如下错误:
【Linux】vscode环境配置测试、调试分文件编写_第8张图片

如果头文件和源文件在一起,编译器可以在同文件夹下找到。
但我们将func.h文件放到了子文件夹下,编译器找不到头文件了。
也可以给具体名字,具体哪个文件夹下的哪个文件
【Linux】vscode环境配置测试、调试分文件编写_第9张图片
运行成功:
【Linux】vscode环境配置测试、调试分文件编写_第10张图片

3.配置库文件(以opencv举例)

之前的头文件和源文件是我们自己写的,一些大型的库是直接封装好,只给你了库文件(.a或.so)和头文件,这时候我们不需要再对源文件进行编译了,而是要链接上他所给的库文件。
下面给一段测试代码:

#include
#include 
#include 

using namespace std;
using namespace cv;

int main()
{
    cout << "This is a test!" << endl;
    cout << "----------------" << endl;

    Mat img = imread("./ubuntu.png",IMREAD_COLOR);
    imshow("UBUNTU", img);
    waitKey(0);
    return 0;
}

之前Ubuntu系统里面已经装好了opencv3.2.0,用locate opencv找到他的头文件和库文件的位置
我的头文件路径是在:/usr/local/include/opencv2/**.hpp
库文件路径是在:/usr/local/lib/…
【Linux】vscode环境配置测试、调试分文件编写_第11张图片

一定要把具体的库写上,这里注意的是 虽然库文件是lib.a或者lib.so这样的格式,但是要去掉前面的lib和后面的后缀。**
这样就就是把库文件链接好了。
【Linux】vscode环境配置测试、调试分文件编写_第12张图片

4.插件code_runner配置多cpp文件编译

单个cpp文件直接运行就可以了,但是当我们自己提供源文件的时候,默认只是会编译main.cpp

报错:
[Running] cd “d:\vscode_project” && g++ test.cpp -o test && "d:\vscode_project"test
C:/TDM-GCC-64/bin/…/lib/gcc/x86_64-w64-mingw32/10.3.0/…/…/…/…/x86_64-w64-mingw32/bin/ld.exe: C:\Users\59723\AppData\Local\Temp\ccUv3ptC.o:test.cpp:(.text+0xe): undefined reference to `printHello()’
collect2.exe: error: ld returned 1 exit status
[Done] exited with code=1 in 0.481 seconds

在设置中搜索code,找到code-runner的设置:
【Linux】vscode环境配置测试、调试分文件编写_第13张图片

进入以后找到cpp的配置进行修改:将 $fileName 替换为 *.cpp,即可编译文件下所有的cpp文件了。
【Linux】vscode环境配置测试、调试分文件编写_第14张图片

setup 只编译 main.cpp,忽略所有其他 cpp,或者需要用 main 编译的 c 文件

你可能感兴趣的:(vscode,ide,编辑器)