use vscode mingw cmake on windows

记住mingw去官网下面的MingW-W64-builds, 下这个版本

x86_64-13.1.0-release-posix-seh-ucrt-rt_v11-rev1.7z

posix很重要, win32版本没线程支持,用到会报错

可以测试下是否能正常运行

cpp 复制代码
#include <thread>
#include <mutex>
#include <condition_variable>
#include <iostream>

std::thread second_workthread;
std::mutex mtx;
std::condition_variable objectDetectorRun;

task.json

安好mingw, cmake

bash 复制代码
{
    "version": "2.0.0",
    "windows": {
        "options": {
            "shell": {
                "executable": "powershell"
            }
        }
    },
    "type": "shell",
    "options": {
        "cwd": "${workspaceRoot}"
    },
    "tasks": [
        {
            "label": "cmake",
            "linux": {
                "command": "cmake -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=Debug .."
            },
            "windows": {
                "command": "cmake -G 'MinGW Makefiles' .."
            },
            "type": "shell",
            "dependsOn": "_makebuildfolder",
            "options": {
                "cwd": "${workspaceRoot}/build"
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "panel": "shared"
            },
            "problemMatcher": [],
            "group": "build"
        },
        {
            "label": "make",
            "linux": {
                "command": "make -j 8"
            },
            "windows": {
                "command": "mingw32-make -j 4"
            },
            "options": {
                "cwd": "${workspaceRoot}/build"
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "panel": "shared"
            },
            "isBuildCommand": true,
            "problemMatcher": [],
            "group": "build"
        },
        {
            "label": "_makebuildfolder",
            "type": "shell",
            "linux": {
                "command": "mkdir -p ${workspaceFolder}/build"
            },
            "windows": {
                "command": "mkdir -Force ${workspaceFolder}/build"
            },
            "problemMatcher": [],
            "group": "build"
        },
        {
            "label": "copy_raw",
            "type": "shell",
            "linux": {
                "command": "mkdir -p ${workspaceFolder}/build"
            },
            "windows": {
                "command": "Copy ${workspaceFolder}/*.raw ${workspaceFolder}/build "
            }
        },
        {
            "label": "run",
            "args": ["32"],
            "windows": {
                "command": "${command:cmake.launchTargetPath}"
            },
            "options": {
                "cwd": "${workspaceRoot}/build"
            },
        },
        {
            "label": "runwithbuild",
            "args": ["32"],
            "windows": {
                "command": "${command:cmake.launchTargetPath}"
            },
            "dependsOrder": "sequence", //tj : make sure exe deps in order
            "dependsOn": ["cmake", "make", "copy_raw"],
            "options": {
                "cwd": "${workspaceRoot}/build"
            },
        }
    ]
}

对于opencv, 要么自己用Mingw编译, 要么下载现存的, 我这里下的现成的https://github.com/huihut/OpenCV-MinGW-Build

bash 复制代码
cmake_minimum_required( VERSION 3.5 )
project( main )

set(CMAKE_CXX_FLAGS "-std=c++14")
set (OpenCV_DIR C:\\Software\\OpenCV-MinGW-Build)
find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})


add_executable( main main.cpp )
target_link_libraries( main ${Pangolin_LIBRARIES} )

debug的话

launch.json

bash 复制代码
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "targetArchitecture": "x86",
            "program": "${command:cmake.launchTargetPath}",
            // "program": "${workspaceFolder}/build/main.exe",
            // "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": ["32"],//左边启动debug, 从这里pick up args
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/build",
            "environment": [
                {
                    "name": "PATH",
                    "value": "${env:Path};C:\\Workspace\\v-nova\\build"
                    //这里设置错了,容易出现Unable to start debugging. Unexpected GDB output from command "-exec-run"
                }
            ],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:/Software/mingw64/bin/gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
        }
    ]
}

需要配置用 cmake:configure with cmake debugger

注意最下面的状态栏, 如果没有设置点进去设置

另外 cmake可能会让把

C:\Software\OpenCV-MinGW-Build\x64\mingw\bin

加入环境变量

如果传参在launch.json 不work的话, 在setting.json里面加上

从状态栏启动debug的话, 设置 args要在setting.json里面

bash 复制代码
{
    "cmake.configureOnOpen": false,
    "files.associations": {
        "ostream": "cpp",
        "mutex": "cpp",
        "array": "cpp",
        "string": "cpp",
        "string_view": "cpp"
    },
    "C_Cpp.default.compilerPath": "C:\\Software\\mingw64\\bin\\g++.exe",
    "cmake.debugConfig": {
        "args": [
            "32"//下面启动debug从这里Pick up args
        ]
    }
}

从左边启动debug的话, args在launch.json里面设置

https://github.com/microsoft/vscode-cmake-tools/issues/121

相关推荐
kakakahahahaha12 小时前
Windows笔记本重装系统的4种路径和风险边界
windows·电脑·笔记本电脑·内容运营·软件需求·重装系统
自动化监测Learner15 小时前
Windows 自带搜索太慢?Everything 安装与使用指南,全盘文件秒搜
windows·everything
天机玄正19 小时前
云运维高阶二:CLI 调用 API (白名单追随)
windows·云原生
您^_^19 小时前
DeepSeek-Harness v0.1.5-alpha.1更新后旧会话打不开?5 步抢救 8MB 会话照抄
人工智能·windows·个人开发·deepseek v4 pro·deepseekharness
WeiXin_DZbishe19 小时前
基于springboot大学生提问箱系统-计算机毕设【课程设计】72593
javascript·vue.js·spring boot·vscode·python·node.js·php
正仪20 小时前
systemd 是什么?
linux·运维·windows
kqz201420 小时前
Android Studio Commit 面板临时文件.gitignore
ide·android studio·intellij-idea
小溪学编程20 小时前
Java ListIterator 接口详解:双向遍历与列表修改的利器
java·开发语言·windows
天天喝旺仔20 小时前
AI 编程实战:用 Cursor + Claude Code + Copilot 把效率翻倍
ide·chatgpt·prompt·copilot·ai编程
2601_9623649721 小时前
没有 TPM2.0,还能用 Windows Hello 摄像头吗?
windows·安全·电脑