简述

近期在学习opencv的使用,在进行多文件编写时遇到了诸多问题,在查阅众多博客之后,问题一个一个解决了,用这篇文章记录下我的解决方法,希望可以为你提供一定的帮助。(新手拙见,欢迎批评指正)。

创建项目并编写代码。我的项目文件结构如下

vscode launch 配置Android flavor_g++

vscode launch 配置Android flavor_json_02

1、 launch.json文件

vscode launch 配置Android flavor_ubuntu_03

 在创建项目之后,点击左侧任务栏的第四个选项 运行与调试 ,点击右侧蓝色字 创建launch.json文件,完成launch.json文件的创建。

vscode launch 配置Android flavor_c++_04

点击右下角的添加配置,选择 C/C++:(gdb) 启动

vscode launch 配置Android flavor_c++_05

在launch.json中,我们需要修改的只有几个地方,我将代码贴在下方。

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            
            "program": "${fileDirname}/main",
            //"program": "输入程序名称,例如 ${workspaceFolder}/a.out",(修改前)
            //此处表示程序编译build后生成的文件路径和名字(此处可执行文件名为a.out)
            //路径和名字都可以自定义
            

            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description":  "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],

            //在此处添加一行代码,这里的main应该与上方的program中的可执行文件名相同
            "preLaunchTask":"main"

        }
    ]
}

 注意,program中的可执行文件名可以自定义,不过要与下方添加的“prelaunchTask"后的文件名一致,与task.json中的"label"关键字的名字相同,最好与”agrs“关键字生成的可执行文件名字相同,避免一些不必要的错误。

修改完成的launch.json文件截图如下:

vscode launch 配置Android flavor_g++_06

 到此,launch.json文件编写完成。

2、task.json文件

按下 ctrl + shift + p,输入Tasks:Configure Default Build Task,选择配置默认生成任务,再选择g++生成活动文件。

vscode launch 配置Android flavor_g++_07

vscode launch 配置Android flavor_g++_08

生成的task.json文件如下:

vscode launch 配置Android flavor_vscode_09

在这个文件中,我们需要修改的是label和args。

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			
            "label": "main",
            //此处改为与program的可执行文件同名
			
            "command": "/usr/bin/g++",
			"args": [
				"-fdiagnostics-color=always",
				
                //此处为.cpp文件的路径和名称,大家根据自己的项目自行修改
                "-g",
				"${workspaceFolder}/src/main.cpp",
				"${workspaceFolder}/src/demo1.cpp",
                
                //此处的include是我放置自定义头文件的路径
                "-I",
				"${workspaceFolder}/include/",
				
                //此处为我的opencv2的安装路径,大家自行修改
                "-I",
				"usr/文档/opencv-3.4.14/include/opencv2",
				
                //生成可执行文件的路径和名称,与launch.json中的programe相同
                "-o",
				"${fileDirname}/main",
                
                //指向opencv的库
				"`pkg-config --cflags --libs opencv`"
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "编译器: /usr/bin/g++"
		}
	]
}

到此,task.json 文件也编写完成。可以在vscode中运行和调试了。