由於今年疫情影響,很多計劃內的事情都泡湯了,鑑於下學期找工作需要,決定自己在家學習C/C++、OpenCV,刷刷題。這時候找一個合適的IDE編輯運行代碼就尤爲重要,本來準備下載VS,然鵝無意間在網上看到一款輕量級VS編輯器:VScode,對於一個連編譯器、編輯器小白的我來說就是一個巨坑,如果網速良好我還是建議下載一個VS。下面就把配置C/C++、OpenCV過程中一些經驗(血淚史)分享給有需要的小夥伴!
先搞清楚VS code是什麼東東?
百度詞條解釋:
編譯器就是將「一種語言(通常爲高級語言)」翻譯爲「另一種語言(通常爲低級語言)」的程序。一個現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 目標代碼 (object code) → 鏈接器 (Linker) → 可執行程序 (executables)。
對於C語言來說,編譯器就是將源程序(.c/.cpp)轉化成二進制形式的目標程序(Windows下爲.obj)。Windows採用GCC(GNU Compiler Collection,GNU編譯器套件)作爲程序語言的編譯器。
百度詞條解釋:
文本編輯器(或稱文字編輯器)是用作編寫普通文字的應用軟件,它與文檔編輯器(或稱文字處理器)不同之處在於它並非用作桌面排版(例如文檔格式處理),它常用來編寫程序的源代碼。
簡單來說,就是一個只負責敲代碼的應用工具,可以通過將編輯器上的源碼拷貝到Source File中編譯運行調試等操作。
常用的編輯器有:
本文所使用的VS code就是一個編輯器,
百度詞條解釋:
鏈接器(Linker)是一個程序,將一個或多個由編譯器或彙編器生成的目標文件外加庫鏈接爲一個可執行文件。目標文件是包括機器碼和鏈接器可用信息的程序模塊。簡單的講,鏈接器的工作就是解析未定義的符號引用,將目標文件中的佔位符替換爲符號的地址。鏈接器還要完成程序中各目標文件的地址空間的組織,這可能涉及重定位工作。
再簡單來說,鏈接器就是將編譯器產生的目標文件打包成可執行文件(Windows下是我們常見的.exe文件)或者庫文件或者目標文件的程序。我們平時所接觸的一些動態鏈接庫(.dll/.so)、靜態鏈接庫(.lib/.a)都是鏈接器對目標文件打包構成的庫文件,方便使用!
百度詞條解釋:
引集成開發環境(IDE,Integrated Development Environment )是用於提供程序開發環境的應用程序,一般包括代碼編輯器、編譯器、調試器和圖形用戶界面等工具。集成了代碼編寫功能、分析功能、編譯功能、調試功能等一體化的開發軟件服務套。所有具備這一特性的軟件或者軟件套(組)都可以叫集成開發環境。如微軟的Visual Studio系列,Borland的C++ Builder、Delphi系列等。該程序可以獨立運行,也可以和其它程序並用。IDE多被用於開發HTML應用軟件。例如,許多人在設計網站時使用IDE(如HomeSite、DreamWeaver等),因爲很多項任務會自動生成。
簡單來說,就是集成了編輯器、編譯器以及鏈接器等衆多功能於一體的一個集成開發環境。
目前最爲常用的IDE就是微軟公司開發的IDE:Microsoft Visual Studio(簡稱VS)
在編寫C/C++程序中的區別:
工具或指令 | 作用 |
---|---|
編輯器 | 寫代碼,產生.c/.cpp源文件 |
編譯器 | 編譯源文件,產生.obj目標文件 |
鏈接器 | 打包目標文件,產生.exe等可執行文件 |
IDE | 集成以上功能,可同時完成以上操作 |
本文的配置工具VS code就是一個編輯器,不含編譯器、鏈接器等,所以要運行代碼還需要安裝其他工具。這也就是爲什麼VScode巨坑的原因,雖然官方提供了各種工具,但是我們還是需要自己安裝與配置!
Windows 7 x64
OpencCV3.4
cmake3.9 x64
Mingw x64
進入VS code官網下載對應版本的安裝包(注意系統是x86還是x64),具體安裝步驟就不重述了。
2、下載MinGW-64(Minimalist GNUfor Windows,Windows特定頭文件和使用GNU工具集導入庫的集合),簡單來說就是MinGW是一個支持gcc編譯功能、gdb調試功能的開發環境。
將Path添加到系統環境變量:
WIN+R->cmd或者在控制面板中打開命令提示符(就是那個Dos命令黑框框),測試一個MinGW是否添加成功,若添加成功則可以調用Debug工具:
這裏輸入命令 g++、gcc、gdb是測試編譯器和調試器,如圖所示沒有提示輸入命令錯誤就代表沒問題!
下面我們打開VS code添加一些必要的插件!
1、中文(簡體語言包)
重啓VScode後就會變成簡體中文版。
2、C/C++編譯工具
下面我們編輯一段C++代碼並調試!
主要完成:
在桌面新建一個文件夾,右鍵選擇: —>通過Code打開,然後在VS code中新建一個文檔:HelloWorld.cpp,編輯一段代碼
這時我們只是完成了源碼編輯,按F5調試會提示創建launch.json腳本文件,或者在左側調試欄創建launch.json文件(父目錄:.vscode自動創建)
我們寫的是C++文件,所以選擇g++(gdb)選項–>選擇"g++.exe build active file",然後編輯launch.json文件如下:
這裏,我們只需要關注「Configuration」下面三個參數:
參數 | 解釋 |
---|---|
program | 指明debug時運行哪個程序,默認與被編譯文件同名的.exe文件 |
MIMode | debug工具,Win10環境下是MinGW |
miDebuggerPath | gdb.exe安裝路徑 |
創建launch.json後,還需要創建Task.json文件,按Ctrl+Shift+P調出命令面板,搜索Task:
創建並編輯Task.json文件參數:
「label」必須設置爲preLaunchTask的值(preLaunchTask在launch.json文件最後一行);「command」爲g++編譯器路徑(這裏也可以寫g++),另外需要在可選參數「args」中添加:"-std=c++17"(或"-std=c++11")表示設置c++標準爲c++17(c++11)。
【注】launch.json和Task.json文件串聯執行,launch中preLaunchTask調用Task,所以參數值需設置成同一參數!詳細可參考B站視頻:【VS Code 搭建輕量美觀的 C/C++開發環境】
以上就完成了VS code對C/C++編譯環境的配置,下面我們利用cmake配置OpenCV…
待續…
1、C/C++代碼測試
運行成功!另外控制檯顯示可以在launch.json文件設置
「externalConsole」: true //True表示調用外部控制檯,False是不調用
參考博客:
【1】vscode 配置OpenCVC編譯環境
【2】將 VSCode 打造成 OpenCV 的 IDE(C++,window10 1803)
【3】visual studio code(vscode) c++ 編譯opencv並運行調試
【4】c++ 編譯OpenCV-3.3.0過程及遇到的問題