在VScode上开发python是一件非常完美的事情,加上Win10的Powershell的终端环境,让你有一种在linux下开发的感觉,后面想开发一个C++的开发环境,在网上看了很多的教程,终于实现了,具体的操作过程这里不做过多的描述,看网上的教程就可以了,这里只备注一些要走注意的事项。
1. MinGW的选择,不要直接下载,要选择posix-seh的版本下载,不要问为什么,编译opencv的时候你就知道了,直接下载的会报一系列错误。
2. opencv的编译,使用以下方式
一定要勾选CXX11
如果报下面错,CPU_DISPATCH 选AVX2
ccp8vLwk.s:22235: Error: invalid register for .seh_savexmm
添加opencv_contrib
最后选择编译成libopencv_world的一个库,方便。
3.VScode 的配置
c_cpp_properties.ison
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"D:/opencv-3.4.1/build/MinGW/install/include" //加入opencv库目录,增加opencv代码补全及提示
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.17763.0",
"compilerPath": "D:/mingw64/bin/g++.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"configurationProvider": "ms-vscode.cmake-tools"
}
],
"version": 4
}
lunch.json
{
"version": "0.2.0",
"configurations": [
// Debug 1,这里也可以配置多个Debug任务,这其实和tasks.json很类似
{
"name": "first_exe", // Debug任务名
"type": "cppdbg", // 类型
"request": "launch",
"program": "${workspaceFolder}/build/OpencvST.exe", // 需要调试的应用程序,这是需要按照你的需要进行调整的
"args": [], // 传递参数给应用程序
"stopAtEntry": false,
"cwd": "${workspaceFolder}", // 当前工作路径
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:/mingw64/bin/gdb.exe", // 这里需要填写你自己的gdb.exe的路径
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"console": "externalTerminal"
}
]
}
settings.ison
{
"cmake.generator": "MinGW Makefiles"
}
tasks.json
{
// 这里配置了三个Task
"tasks": [
// Task 1:生成build文件夹
{
"type": "shell", // 这里决定了task的类型,shell类型就是在命令行里运行command的命令,还有一种类型是“process”,这里就不介绍了
"label": "mk_build", // task的名字
"command": "mkdir", // 需要被运行的命令
"args": ["build"], // 传递给command的参数
"options": {
"cwd": "${workspaceFolder}",
},
},
// Task 2:运行cmake
{
"type": "shell",
"label": "cmake",
"command": "cmake",
"args": [
"-G",
"MinGW Makefiles", // 这里必须定义生成器,否则默认cmake生成的是VS Studio可编译的工程
"${workspaceFolder}"
],
"options": {
"cwd": "${workspaceFolder}/build", // 工作路径,就是说cmake的输出都会放在${workspaceFolder}/build文件夹下
},
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
// Task 3:运行make
{
"type": "shell",
"label": "build",
"command": "mingw32-make",
"args": ["-j4"],
"options": {
"cwd": "${workspaceFolder}/build",
},
"problemMatcher": [],
"group": {
"kind": "build", // 这里说明这个任务时输入"build"类型的,也就是说明,这是一个生成任务
"isDefault": true
},
"dependsOn": [
"cmake" // 这里设置,说明了这个任务一定要在Task “cmake”执行之后方可执行
]
}
],
"version": "2.0.0"
}
4. CMakeLists.txt添加opencv
cmake_minimum_required(VERSION 3.0)
project(OpencvST)
#添加OpenCV的目录
set(OpenCV_DIR D:/opencv-3.4.1/build/MinGW/install)
#寻找OpenCV库
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
#打印调试信息
message(STATUS "Project: ${PROJECT_NAME}")
message(STATUS "OpenCV library status:")
message(STATUS " version: ${OpenCV_VERSION}")
message(STATUS " libraries: ${OpenCV_LIBS}")
message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}")
set(SOURCE src/opencvst.cpp)
add_executable(${PROJECT_NAME} ${SOURCE})
#添加链接库
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
5. 运行OPencv显示图片不出来,并且调试控制台报错
将编译好的libopencv_world341.dll放在生成文件的目录下
最后看一下成果吧
注:我安装的所有的资源都在这里,其中包含MinGW,Cmake,以及Opencv,当然,编译好的opencv在这里,如果你怕编译出错或麻烦的话。
powershell 修改New-Item 命令为touch
function touch {set-content -Path ($args[0]) -Value ($null)}