Visual Studio Code中設(shè)置OpenCV(MinGW-w64)
上一篇blog講的如何使用g++編譯CV源碼智亮,這篇blog將使用Visual Studio Code作為開(kāi)發(fā)工具漓帅。
有請(qǐng)我們的主角Mircosoft Visual Studio Code ————輕量跨平臺(tái)開(kāi)源源碼編輯器上忍。
portal
:https://code.visualstudio.com/
直接點(diǎn)擊Download for Windows备籽,下載完成后打開(kāi).exe下一步下一步安裝即可长捧。
打開(kāi)vscode(visual studio code的簡(jiǎn)寫(xiě))领跛,發(fā)現(xiàn)是英文版核蘸,沒(méi)事的谒拴,vscode的強(qiáng)大之處在于它支持各種各樣的插件尝江,而它的功能是通過(guò)各種插件發(fā)揮的。
點(diǎn)擊紅色圈內(nèi)的插件處英上,會(huì)打開(kāi)插件界面炭序,在搜索欄輸入Chinese,會(huì)出現(xiàn)Chinese (Simplified) Language Pack for Visual Studio Code
,點(diǎn)擊Install
安裝苍日,完成安裝后重啟vscode惭聂,界面就會(huì)變成中文。
這里是因?yàn)椴┲饕呀?jīng)安裝過(guò)了相恃,所以沒(méi)有顯示安裝辜纲。如果重啟后還是英文,請(qǐng)按下Ctrl
+Shift
+P
組合鍵拦耐,在打開(kāi)的選項(xiàng)卡中輸入language
,會(huì)出現(xiàn)Configure Display Language
,點(diǎn)擊后選擇zh-cn
,它會(huì)提示是否重啟耕腾,選擇Restart Now。重啟過(guò)后即為中文杀糯。
vscode的強(qiáng)大之處在于它的拓展插件扫俺,所以打開(kāi)拓展界面,再裝上一些常用的拓展插件固翰。
- 在搜索欄輸入C/C++,選擇
C/C++
狼纬、C++ Intellisense
安裝羹呵。 - 搜索欄輸入cmake,選擇
CMake Tools
畸颅、CMake
安裝担巩。這個(gè)是用于之后寫(xiě)比較大一點(diǎn)的工程用得上。
編譯方式一没炒,編寫(xiě).json
文件:
- 在啟動(dòng)界面點(diǎn)擊打開(kāi)文件夾涛癌,將目錄選擇至
main.cpp
所在的目錄。打開(kāi)main.cpp
,點(diǎn)擊調(diào)試,選擇啟動(dòng)調(diào)試,在選擇環(huán)境這兒選擇C++(GDB/LLDB)
送火,選擇g++
項(xiàng)拳话,會(huì)出現(xiàn)launch.json
配置文檔界面。復(fù)制如下內(nèi)容替換原來(lái)launch.json
的內(nèi)容种吸。部分要修改的地方請(qǐng)根據(jù)自己的情況修改弃衍。
launch.json
{
// 使用 IntelliSense 了解相關(guān)屬性。
// 懸停以查看現(xiàn)有屬性的描述坚俗。
// 欲了解更多信息镜盯,請(qǐng)?jiān)L問(wèn): https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "build",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "這里填gdb.exe的目錄,目錄填完后還要加上gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build"
}
]
}
- 按下
Ctrl
+Shift
+P
組合鍵猖败,在彈出選項(xiàng)卡中輸入tasks速缆,選擇 任務(wù):配置默認(rèn)生成任務(wù)(Tasks:Configure Default Build Task
),會(huì)進(jìn)入tasks.json
的配置文檔界面恩闻,同樣復(fù)制如下內(nèi)容替換掉原來(lái)tasks.json
內(nèi)容艺糜。部分地方請(qǐng)根據(jù)自己的目錄修改。
tasks.json
{
// 有關(guān) tasks.json 格式的文檔幢尚,請(qǐng)參見(jiàn)
// https://go.microsoft.com/fwlink/?LinkId=733558
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "build",
"command": "這里填g++.exe的目錄破停,填完目錄后加上g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-I",
"這里填OpenCV頭文件目錄",
"-L",
"這里填靜態(tài)庫(kù)文件目錄",
"-l",
"opencv_img_hash345",
"-l",
"opencv_world345"
],
"options": {
"cwd": "這里填MinGW-w64的bin目錄"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
},
]
}
- 按下
Ctrl
+Shift
+P
組合鍵,在彈出選項(xiàng)卡中輸入c/c++尉剩,選擇C/C++編譯配置(JSON)(C/C++:Edit Configurations(JSON)
)真慢,會(huì)進(jìn)入c_cpp_properties.json
,更改其中includePath
:
"includePath": [
"${workspaceFolder}/**",
"F:\\CV\\build\\install\\include",
"F:\\CV\\build\\install\\include\\opencv",
"F:\\CV\\build\\install\\include\\opencv2"
],
依據(jù)個(gè)人情況修改目錄,將include
目錄中的opencv
理茎、opencv2
子目錄也都添加進(jìn)去黑界。注意三個(gè)JSON文件在配置完后都要保存(隨手Ctrl
+S
是好習(xí)慣。)
- 修改完成后的目錄結(jié)構(gòu):
- 完成后點(diǎn)到源碼界面功蜓,選擇調(diào)試园爷,啟動(dòng)調(diào)試(快捷鍵
F5
),等待編譯完成式撼。執(zhí)行的命令會(huì)在下面終端選項(xiàng)卡顯示出來(lái)童社。跳出圖片,編譯成功著隆。
說(shuō)明:
報(bào)錯(cuò)很正常扰楼,出現(xiàn)問(wèn)題先檢查JSON文件的路徑是否正確呀癣,路徑均用
\\
或者/
切換下級(jí)。有時(shí)候會(huì)因?yàn)橐粋€(gè)逗號(hào)的丟失導(dǎo)致JSON文件不能正常讀取弦赖。確定JSON文件沒(méi)問(wèn)題了项栏,出現(xiàn)終端報(bào)錯(cuò)記得看報(bào)錯(cuò)的內(nèi)容,如果出現(xiàn)No such file or directory
就還是文件路徑有問(wèn)題蹬竖。源代碼錯(cuò)誤請(qǐng)更改源碼沼沈。
使用gdb調(diào)試的時(shí)候需要注意自己的
dotNet
(.NET)版本需大于4.6,如果.NET沒(méi)有安裝請(qǐng)通過(guò)傳送門(mén):
Portal
:https://dotnet.microsoft.com/download/dotnet-framework/net48?utm_source=getdotnet&utm_medium=referral
選擇Download.NET Framework 4.8 Runtime币厕。建議選裝:微軟常用運(yùn)行庫(kù)
Portal
:這個(gè)去百度查吧列另,到處都有下載。
編譯方式二旦装,編寫(xiě)CMakeLists.txt
這種方式是調(diào)用CMake生成Makefile页衙,使得編譯器按照Makefile里的規(guī)則對(duì)源文件進(jìn)行有序的編譯。
首先請(qǐng)將CMake目錄中的bin
子目錄添加到環(huán)境變量中阴绢,可以打開(kāi)終端輸入cmake
判斷環(huán)境變量是否設(shè)置成功店乐。
使用vscode打開(kāi)源文件所在的同級(jí)目錄,新建一個(gè)CMakeLists.txt文件呻袭,輸入以下內(nèi)容:
CMakeLists.txt
cmake_minimum_required(VERSION 3.0.0)
project(main)
include_directories(F:\\CV\\build\\install\\include)
SET(SRC ${PROJECT_SOURCE_DIR}/main.cpp)
link_directories(F:\\CV\\build\\install\\x64\\mingw\\lib)
link_libraries(libopencv_img_hash345.dll.a)
link_libraries(libopencv_world345.dll.a)
add_executable(main ${SRC})
說(shuō)明:
請(qǐng)按照自己的路徑進(jìn)行修改眨八。
cmake_minimum_required(VERSION 3.0.0)
:聲明CMake最小版本。
project(main)
:項(xiàng)目名稱main棒妨。
include_directories
:頭文件目錄踪古。
SET(SRC ${PROJECT_SOURCE_DIR}/main.cpp)
:設(shè)置SRC(源碼)為main.cpp
含长。
link_directories
:靜態(tài)庫(kù)文件目錄券腔。
link_libraries
:需要鏈接的庫(kù)文件名稱(這兒必須打全名)。
add_executable
:生成可執(zhí)行文件拘泞。
CMakeLists.txt
有一套自己編寫(xiě)的語(yǔ)言纷纫,如果想要實(shí)現(xiàn)更復(fù)雜的功能(如把源碼編譯各種類型的庫(kù)文件,條件編譯陪腌,編譯模式Debug或Release辱魁,信息提示等等。這在一個(gè)工程里面是不可或缺的诗鸭。)染簇,就應(yīng)該靠搜索引擎了。
按下組合鍵Ctrl
+Shift
+P
在選項(xiàng)卡中輸入cmake强岸,會(huì)出現(xiàn)CMake:Configuration锻弓,選中既會(huì)開(kāi)始進(jìn)行cmake操作。
在輸出界面出現(xiàn)Configuring done和Generating done蝌箍,證明cmake完成青灼,會(huì)在源碼同級(jí)目錄生成一個(gè)build
目錄暴心,在終端輸入cd build
進(jìn)入build
目錄,輸入mingw32-make
進(jìn)行編譯。編譯完成在build
目錄里會(huì)生成main.exe杂拨,輸入.\main.exe
嘗試運(yùn)行专普,運(yùn)行成功。