컴퓨터공학 리서치/공개

CMakeLists.txt를 사용하여 OpenCV 링크하기

레필리아 2015. 10. 5. 14:54

CLion 사용시 외부라이브러리(e.g. OpenCV) 링크가 불편하다.

일반적인 방법으로 아래와 같은 형식으로 CMakeLists.txt를 작성하게 된다.


cmake_minimum_required(VERSION 3.2)

project(PlateDetection1)


set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")


# set dir for header and library

include_directories(/usr/local/lib/opencv-3.0.0/include)

link_directories(/usr/local/lib/opencv-3.0.0/lib)


# sources and libs

set(SOURCE_FILES main.cpp PlateDetection.cpp PlateDetection.h)

set(EXT_LIBS opencv_core opencv_imgcodecs opencv_highgui opencv_imgproc opencv_calib3d opencv_features2d)


# linking phase

add_executable(PlateDetection1 ${SOURCE_FILES})

target_link_libraries(PlateDetection1 ${EXT_LIBS})


OpenCV와 같이 참조해야할 라이브러리 갯수가 많을 경우는 이 방식은 엄청 불편하다.

하지만 라이브러리 컴파일 시 <NAME>Config.cmake or <NAME>-config.cmake 와 같은 파일이 생성된다면,

조금 더 쉽게 CMakeLists.txt를 작성할 수 있다.


아래 두 가지 방법 중 아무거나 사용하도록 하자.


cmake_minimum_required(VERSION 3.3)

project(LaneDetection1)


set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")


set(OpenCV_DIR [OpenCV.cmake PATH])

find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIR})


set(SOURCE_FILES main.cpp)

add_executable(LaneDetection1 ${SOURCE_FILES})

target_link_libraries(LaneDetection1 ${OpenCV_LIBRARIES})


cmake_minimum_required(VERSION 3.3)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} [OpenCV.cmake PATH])

project(LaneDetection1)


set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")


find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIR})


set(SOURCE_FILES main.cpp)

add_executable(LaneDetection1 ${SOURCE_FILES})

target_link_libraries(LaneDetection1 ${OpenCV_LIBRARIES})