报错:
> Executing task: C/C++: g++ 生成活动文件 <
无法生成和调试,因为活动文件不是 C 或 C++ 源文件。
终端进程启动失败(退出代码: -1)。
终端将被任务重用,按任意键关闭。
在 VSCode 中 , 创建 cpp 源码
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
// 使用 cv::VideoCapture 打开摄像头
cv::VideoCapture cap(0); // 参数0通常表示默认摄像头
if (!cap.isOpened()) {
std::cerr << "无法打开摄像头" << std::endl;
return -1;
}
cv::Mat frame;
while (true) {
// 从摄像头读取一帧
if (!cap.read(frame)) {
std::cerr << "无法读取帧" << std::endl;
break;
}
// 显示帧
cv::imshow("摄像头窗口", frame);
// 按 'ESC' 键退出
if (cv::waitKey(30) == 27) {
break;
}
}
// 释放摄像头
cap.release();
cv::destroyAllWindows();
return 0;
}
生成了 tasks.json 构建脚本 ;
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ 生成活动文件",
"command": "/usr/bin/g++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: /usr/bin/g++"
}
]
}
二、解决方案
在 tasks.json 构建脚本中 , 指定 C/C++ 文件路径的是 "tasks 下的 “args” 路径 ,
当前配置的 g++ 参数的 args 配置如下 :
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
“ f i l e " 配置就是 C + + 源文件的路径 , 该路径无效 , 这里修改为 " {file}" 配置就是 C++ 源文件的路径 , 该路径无效 , 这里修改为 " file"配置就是C++源文件的路径,该路径无效,这里修改为"{workspaceFolder}/*.cpp” 参数 ;
修改后的 tasks.json 构建脚本 如下 :
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ 生成活动文件",
"command": "/usr/bin/g++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${workspaceFolder}/*.cpp",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: /usr/bin/g++"
}
]
}
使用 Ctrl + Shift + B 快捷键 , 即可完成编译操作 ;
> Executing task: C/C++: g++ 生成活动文件 <
正在启动生成...
/usr/bin/g++ -fdiagnostics-color=always -g /home/octopus/vscode/helloworld/*.cpp -o /home/octopus/vscode/helloworld/.vscode/tasks
生成已成功完成。
终端将被任务重用,按任意键关闭。
生成的可执行文件在 .vscode 目录下 , 名称是 task ;
使用 ./task 命令 , 执行该 task 可执行文件