기본 개발 도구 설치
이 가이드는 Ubuntu 18.04 기준으로 작성되었지만, macOS나 Windows 10에서도 대부분 유사하게 적용할 수 있습니다. 먼저 Visual Studio Code를 설치해야 합니다. 설치 후 C/C++ 확장팩을 추가해야 하는데, 때때로 ~/.vscode/extensions 디렉터리에 대한 권한 문제가 발생할 수 있습니다. 이 경우 다음 명령어로 접근 권한을 부여할 수 있습니다:
sudo chmod o+w ~/.vscode
sudo chmod o+w ~/.vscode/extensions
권한 조정 후 VSCode 내에서 정상적으로 확장 프로그램을 설치할 수 있게 됩니다.
C++ 확장 프로그램 추가
확장 탭에서 C++를 검색하고 첫 번째 결과인 Microsoft 제공의 C/C++ 확장을 설치합니다. 이 확장은 IntelliSense, 디버깅, 코드 탐색 등의 핵심 기능을 제공합니다.
디버그 설정: launch.json
작업 폴더의 .vscode 디렉터리에 launch.json 파일을 생성하여 디버거 동작 방식을 정의합니다:
{
"version": "0.2.0",
"configurations": [
{
"name": "GDB로 실행",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${fileBasenameNoExtension}.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"preLaunchTask": "build",
"setupCommands": [
{
"description": "gdb 출력 포맷 활성화",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
program: 빌드된 실행 파일 경로를 지정합니다. 여기서는 확장명이.out인 파일을 대상으로 합니다.MIMode: Linux에서는gdb, Windows(MinGW)에서는gdb, macOS에서는lldb를 사용합니다.miDebuggerPath: 디버거 바이너리 위치를 명시합니다. 일반적으로/usr/bin/gdb입니다.preLaunchTask: 디버그 전 자동 실행할 작업 이름을 지정합니다.
빌드 태스크 설정: tasks.json
VSCode에서 Ctrl+Shift+P → "Tasks: Configure Task"를 선택하거나 직접 .vscode/tasks.json을 생성합니다:
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": [
"-g",
"-std=c++17",
"${file}",
"-o",
"${fileBasenameNoExtension}.out",
"-I/usr/local/include",
"-I/usr/local/include/opencv4",
"-L/usr/local/lib",
"-lopencv_core",
"-lopencv_imgproc",
"-lopencv_highgui",
"-lopencv_imgcodecs",
"-lopencv_videoio"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": ["$gcc"]
}
]
}
label: 이 값이preLaunchTask와 일치해야 합니다.-I: 헤더 파일 검색 경로를 추가합니다.-L: 라이브러리 파일 경로를 지정합니다.-l: 링크할 라이브러리를 지정합니다. 예를 들어libopencv_core.so는-lopencv_core로 표기합니다. 절대-llibopencv_core라고 쓰지 마세요.
IntelliSense 설정: c_cpp_properties.json
자동 완성과 심볼 탐색을 위해 헤더 경로를 등록합니다. 명령 팔레트에서 C/Cpp: Edit Configurations (UI)를 선택하거나 아래 내용으로 파일을 직접 생성합니다:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/local/include",
"/usr/local/include/opencv4"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
OpenCV 4.x 이상을 사용 중이라면 /usr/local/include/opencv4 경로를 포함해야 하며, 3.x라면 opencv2 경로를 사용합니다.
의존성 문제 해결: libjasper
일부 시스템에서 OpenCV 빌드 시 libjasper.so.1 누락 오류가 발생할 수 있습니다. 이를 해결하려면 다음 명령어로 패키지를 설치합니다:
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
검증 코드
설정 완료 후 간단한 테스트 코드로 동작 확인:
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
cv::Mat image = cv::Mat::zeros(400, 400, CV_8UC3);
cv::circle(image, cv::Point(200, 200), 100, cv::Scalar(0, 255, 0), -1);
cv::imshow("Test", image);
cv::waitKey(0);
return 0;
}
이 코드가 컴파일되고 창이 정상적으로 나타난다면 모든 설정이 성공한 것입니다.