🧶

CMake 실습

Tags
C++
ID matched
Created
Apr 21, 2023 02:39 PM
Last Updated
Last updated July 15, 2023
 
 
 
 

CMake 설치

sudo apt-get install -y cmake
 

VSCode Plugin

 
 

CMake 프로젝트 생성

  • 다음의 순서로 프로젝트를 만든다
    • notion image
      notion image
      notion image
      notion image
  • 초기 프로젝트 구조는 다음과 같다
    • notion image
 
 

프로젝트 구성

  • 다음과 같은 형태로 프로젝트를 구성한다
    • notion image
 
 

파일 작성

  • CMakeLists.txt
    • cmake_minimum_required(VERSION 3.0.0) project(cmake_test LANGUAGES CXX) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_subdirectory(modules) add_executable(cmake_test main.cpp) add_executable(exec_module1 examples/exec_module1.cpp) target_link_libraries(exec_module1 PRIVATE module1)
  • modules
    • module1
      • include/module1/ClassMat.hpp
        • #ifndef HELLO_CMAKE_CLASSMAT_HPP #define HELLO_CMAKE_CLASSMAT_HPP #include "opencv2/opencv.hpp" class ClassMat { public: ClassMat() = default; private: cv::Mat cv_mat_; }; #endif
      • src/ClassMat.cpp
        • #include "module1/ClassMat.hpp"
      • CMakeLists.txt
        • cmake_minimum_required(VERSION 3.0.0) project(module1 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(MODULE1_SOURCE_FILES src/ClassMat.cpp ) add_library(module1 ${MODULE1_SOURCE_FILES} ) find_package(OpenCV REQUIRED) if (OpenCV_FOUND) message(STATUS "OpenCV Found! - ${OpenCV_DIR}") endif() target_include_directories(module1 PUBLIC include ${OpenCV_INCLUDE_DIRS} ) target_link_libraries(module1 PRIVATE ${OpenCV_LIBS})
    • CMakeLists.txt
      • add_subdirectory(module1)
  • examples/exec_module1.cpp
    • #include "module1/ClassMat.hpp" #include <iostream> int main() { const auto instance = ClassMat(); std::cout << "success!!" << std::endl; return 0; }
 
 

CMake 빌드

  • 다음의 순서로 빌드를 진행한다
    • notion image
      notion image
  • 결과창을 확인하며 정상적으로 진행되는지 확인한다
    • notion image
 
 

빌드 파일 실행

  • 다음의 순서로 빌드 파일을 실행한다
    • notion image
      notion image
      notion image
  • 결과창을 확인하며 정상적으로 진행되는지 확인한다
    • notion image