[C++]Ubuntu+VSコード環境でC+、OpenCVコードをコンパイルする


今回のリリースでは、Ubuntu 18.04 LTSのVisual StudioコードでC++コードを作成、実行、デバッグする方法について説明します.また、C++で作成されたOpenCVの作成と実行方法についても説明します.

1.必要なツールのインストール


1.1. C/C++拡張インストール


VSコードを実行し、左ドックの拡張アイコンをクリックするか、View-Extensionsを参照するか、Ctrl+Shift+Xをクリックして拡張を実行します.
検索ウィンドウでC/C++を検索し、対応する拡張ツールをインストールします.

1.2. gcc取付


コンパイラgccをインストールまたは確認します.まず、インストールの有無を確認するため、以下のコマンドを実行します.
$ gcc -v

筆者はすでに設置してあり、写真のように撮っています.

1.3. gdbデバッガのインストール


次にデバッガをインストールします.
$ sudo apt update
$ sudo apt install build-essential gdb

2.ファイルの作成


プロジェクトフォルダとC++ファイルを作成して、C++コードをテストします.筆者はcppTestディレクトリを作成し、cppTest.cppファイルを作成しました.
$ mkdir cppTest
$ cd cppTest
$ code .
参照として、codeがVSコードを開き、code .がその位置でVSコードを開き、code 파일명がそのファイルを開くか開かないかを命令すると、生成される.
開いているVSコードの左側のファイルブラウザ(ドッキングステーション上部のドキュメントアイコンをクリック-New Fileアイコンをクリック)にcppTest.cppファイルを追加し、以下の簡単なコードを入力して保存します.
#include <iostream>
using namespace std;
 
int main() {
    cout << "Hello C++!" << endl;
}

3.構築と実行


構築と実行を開始します.
まず、上部のメニューバーで、「ターミナル」-「デフォルト生成タスクの構成」をクリックします.[C/C++:g++アクティブファイル構築]を選択します.

選択すると同時にtasks.jsonファイルが作成され、左側のファイルブラウザで同じプロジェクトフォルダに作成されていることがわかります.このファイルには、コンパイラのコンストラクション設定が含まれています.

次に、cppTest.cppファイルをクリックしてファイルを選択し、そこでCtrl + Shift + Bに構築します.構築が完了すると、関連マニュアルが下部のターミナルウィンドウに表示され、左側のファイルブラウザでcppTestという実行可能ファイルが生成されます.

下部端末ウィンドウで+ボタンをクリックし、bashを選択してbash端末を作成します.このプロセスはUbuntuの端末でも同様に動作する.端末がVSCodeに表示されないか、ウィンドウが閉じている場合は、上部メニューバー-[View]-[Terminal]に端末を再表示できます.

現在作成されている実行可能ファイルを端末で実行します.
$ ./cppTest
では、コードの内容が実行されていることを確認できます.

4.デバッグ


上部メニューバーで[Run]-[Add Configuration...]選択次のウィンドウで、[C++(GDB/LDB)]-[g++アクティブファイル構築とデバッグ]を選択します.

選択するとlaunch.jsonファイルが作成され、左側でデバッグウィンドウが有効になります.このファイルはデバッガの設定を行うファイルです.デバッグ時に変数やCall Stackなどが表示されます.

個人的にはVisual Studioよりデザインの方が綺麗だと思いますが…?
主関数をブレークポイントなしでデバッグするには、StopAtEntrytrueに変換して保存します.

その後、cppTest.cppに戻り、F5を押すか、上部メニューバーで[Run]-[Start Debugging]を押すか、左側のペインで◆ボタンを押してデバッグを開始します.

上記で新しく作成したアイコンで、2番目をクリックするか、F10を押して対応する実行ラインに移動した後、デフォルトの実行方法は他のデバッグと同じです.

その他の設定変更などの詳細や理論は、一番下のリンクを参照してください.

5.OpenCVコードの作成


今回は、OpenCVを使用したC++コードを作成して実行します.
プロセスを行うためにはcmakeをインストールする必要があります.cmake --versionを実行中にバージョン情報が出力されなかったり、対応するコマンドが見つからなかったりした場合は、まずsudo apt install cmakeを使用してインストールを行います.

5.1. プロジェクトフォルダの作成


最初の手順と同じ方法でプロジェクトフォルダとC++ファイルを作成します.
$ mkdir opencvTest
$ cd opencvTest
$ code .
cppファイル名はopencvTest.cppです.入力コードは次のとおりです.次のコードは、画像の内容を開くだけです.
次のスクリーンショットでは、コードの2行目は#include "/usr/include/opencv2/opencv.hpp"であり、#include "opencv2/opencv.hpp"に実行することができる.
#include <iostream>
#include "opencv2/opencv.hpp"

using namespace std;
using namespace cv;

int main()
{
	Mat img = imread("lenna.bmp");

	if (img.empty()) {
		cerr << "Image laod failed!" << endl;
		return -1;
	}

	namedWindow("image");
	imshow("image", img);
	waitKey();
	destroyAllWindows();
}
また、このフォルダには、サンプル用の画像ファイルも含まれています.画像にはlenna.bmpのファイル名があります.

CMakeList.txtの作成


プロジェクトフォルダにCMakeLists.txtファイルを作成します.ファイル名は正確に指定する必要があります.中身の仕組みは以下の通りです.
cmake_minimum_required(VERSION <본인 cmake의 버전>)
project(<프로젝트 폴더 이름>)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(<프로젝트 폴더 이름> <파일 이름>.cpp)
target_link_libraries(<프로젝트 폴더 이름> ${OpenCV_LIBS})
したがって、私たちの例を変えると、このようになります.
cmake_minimum_required(VERSION 3.10)
project(opencvTest)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(opencvTest opencvTest.cpp)
target_link_libraries(opencvTest ${OpenCV_LIBS})

進行


端末はcmake.コマンドでMakefileを生成する.左側のブラウザウィンドウから表示されます.このファイルに加えて、CMakeFilesディレクトリおよびサブファイル、cmake_install.cmakeファイルおよびCMakeCache.txtファイルが生成される.

次に、端末ではmakeコマンドを使用してプログラムを構築する.opencvTestという実行可能ファイルが生成されます.

実行


端末では./opencvTestコマンドでプログラムを実行する.これにより、私たちが入れた画像がウィンドウを開いて実行されているのが見えます.

もっと簡単な方法があるそうです.以降のリリースでは、OpenCVをこのメソッドとともにデバッグしてみます.

参考資料

  • Visual Studio Code "Using C++ on Linux in VS Code"
  • 黄善圭.2019、OpenCV 4のコンピュータビジョンと機械学習を学ぶ.路友