CMake 로 OpenCV 프로젝트 구축 프로 세 스 분석

프로젝트 구조
전체 항목 을 더욱 조리 있 게 하기 위해 서 우리 의 폴 더 는 다음 과 같은 조직 방식 을 사용 합 니 다.
bin
build
CMakeLists.txt
src
그 중에서 빈 디 렉 터 리 는 컴 파일 로 생 성 된 실행 가능 한 파일 을 놓 는 데 사 용 됩 니 다.build 디 렉 터 리 는 cmake 구축 프로젝트 에 사 용 됩 니 다.src 는 소스 코드 를 놓 는 데 사 용 됩 니 다.

OpenCV 원본 파일
다음은 우리 가 쓴 OpenCV 예제 코드 입 니 다.

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
 
using namespace std;
using namespace cv;
 
int main(int argc, char** argv)
{
  if (argc != 2)
  {
    cout << "Usage: opencv_test <image path>" << endl;
    return -1;
  }
 
  char *imgName = argv[1];
  Mat image;
 
  image = imread(imgName, 1);
  if (!image.data)
  {
    cout << "No image data" << endl;
    return -1;
  }
  Mat gray_img;
 
  cvtColor(image, gray_img, CV_BGR2GRAY);
  imwrite("images/result.jpg", gray_img);
 
  return 0;
}
그림 을 읽 고 그 레이스 케 일 로 전환 하 는 간단 한 예 입 니 다.  
CMake 파일 작성
CMake 파일 의 파일 이름 CMakeLists.txt 는 대소 문자 요구 가 엄격 하 므 로 잘못 쓰 지 않도록 주의 하 십시오.
# project name
PROJECT(opencv_test)
# requirement of cmake version
cmake_minimum_required(VERSION 3.5)
# set the directory of executable files
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
# find required opencv
find_package(OpenCV REQUIRED)
# directory of opencv headers
include_directories(${OpenCV_INCLUDE_DIRS})
# name of executable file and path of source file
add_executable(opencv_test src/opencv_test.cpp)
# directory of opencv library
link_directories(${OpenCV_LIBRARY_DIRS})
# opencv libraries
target_link_libraries(opencv_test ${OpenCV_LIBS})
PROJECT 명령 어의 문법 은:
PROJECT(projectname [CXX] [C] [Java])
이 명령 으로 프로젝트 이름 을 정의 할 수 있 고 프로젝트 가 지원 하 는 언어 를 지정 할 수 있 습 니 다.지원 하 는 언어 목록 은 무시 할 수 있 습 니 다.
이 명령 은 두 개의 cmake 변 수 를 암시 적 으로 정의 합 니 다.
  • _BINARY_DIR 구축 경로
  • _SOURCE_DIR 프로젝트 경로,즉 CMakeLists.txt 가 있 는 경로 입 니 다.  
  • 다음은 cmake 가 요구 하 는 최소 버 전 번 호 를 설정 합 니 다.cmake_minimum_required(VERSION 3.5)SET 명령 의 문법 은:SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])현 단계 에 서 는 SET 명령 이 명시 적 으로 변 수 를 정의 할 수 있다 는 것 만 알 면 된다.여기 서 변수 CMAKERUNTIME_OUTPUT_DIRECTORY 는${opencv 로 정의 합 니 다.test_SOURCE_DIR}/bin 은 프로젝트 경로 의 bin 디 렉 터 리 입 니 다. 
    find_패키지 명령 어
    find_패키지 라 는 명령 은 시스템 에서 프로젝트 구축 에 필요 한 프로그램 라 이브 러 리 를 자동 으로 찾 는 데 사 용 됩 니 다.Liux 와 유 닉 스 시스템 에서 이 명령 은 특히 유용 합 니 다.CMake 가 자체 적 으로 가지 고 있 는 모듈 파일 의 대부분 은 흔히 볼 수 있 는 오픈 소스 라 이브 러 리 에 대한 find 입 니 다.패키지 지원,지원 라 이브 러 리 의 종류 가 매우 많 습 니 다.
    OpenCV 라 이브 러 리 를 찾 으 면 몇 개의 변 수 를 미리 정의 하 는 데 도움 이 됩 니 다.OpenCVFOUND、OpenCV_INCLUDE_DIRS、OpenCV_LIBRARY_DIRS、OpenCV_LIBRARIES 는 OpenCV,OpenCV 의 헤더 파일 디 렉 터 리,OpenCV 의 라 이브 러 리 파일 디 렉 터 리,OpenCV 의 모든 라 이브 러 리 파일 목록 을 찾 을 지 여 부 를 가리킨다.이어서 우 리 는 이 변 수 를 사용 하여 설정 할 수 있다.include_directories(${OpenCV_INCLUDE_DIRS})이 명령 은 포 함 된 헤더 파일 의 경 로 를 설정 하 는 데 사 용 됩 니 다.link_directories(${OpenCV_LIBRARY_DIRS})이 명령 은 라 이브 러 리 파일 의 경 로 를 설정 하 는 데 사용 된다.target_link_libraries(opencv_test ${OpenCV_LIBS})이 명령 은 필요 한 라 이브 러 리 파일 을 설정 하 는 데 사 용 됩 니 다.문법 은:TARGET_LINK_LIBRARIES(target library1<debug | optimized> library2...)그 중의 target 은 앞에서 생 성 된 대상 파일(실행 가능 한 파일)을 설정 하 는 것 입 니 다.add_executable(opencv_test src/opencv_test.cpp)이 명령 은 우선 실행 가능 한 파일 의 이름 이 고,그 다음은 원본 의 이름 이라는 것 을 이해 하기 쉽다.따라서 이 명령 은 반드시 TARGETLINK_LIBRARIES 전에 사용 합 니 다.
    이제 우리 CMakeLists.txt 소개 끝 났 습 니 다.
    구축 프로젝트
    build 디 렉 터 리 에 들 어간 다음 구축 을 시작 합 니 다:
    cd build
    cmake ..
    CMakeLists.txt 는 built 의 부모 디 렉 터 리 에 있 기 때문에 make 명령 이후 에 사용...
    그리고 실행 가능 한 파일 을 컴 파일 합 니 다:
    make
    실행 가능 한 파일 을 실행 하여 성공 여 부 를 테스트 합 니 다.이 프로그램 은 명령 행 인 자 를 전달 해 야 합 니 다.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기