CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
set(PACKAGE_NAME HELLO_CMAKE)
project(${PACKAGE_NAME} LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(${PACKAGE_NAME}_MAIN ./main.cpp)
build: empty directory
main.cpp
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
$ sudo apt install -y cmake
프로젝트 디렉토리 구조를 확인한다.
build 폴더로 이동한다.
build 폴더가 비어있다.
generate 단계: 빌드를 위한 환경설정
$ cmake -DCMAKE_BUILD_TYPE=Debug -GNinja -DCMAKE_INSTALL_PREFIX=../install ../opencv/

-DCMAKE_BUILD_TYPE: debug와 release 옵션 설정-GNinja: build system(=generator) 설정-DCMAKE_INSTALL_PREFIX: 로컬 파일 설치를 위한 경로 지정(install 저장 위치 설정)../opencv/: 최상위 CMakeLists.txt가 위치한 디렉토리build 폴더에 파일들이 생성됐다.

$ make -j7: CPU 코어 7개를 사용하여 프로젝트를 빌드한다.
$ sudo make install




<CTRL+SHIFT+P> 키보드 입력 후 'CMake: Select a Kit'을 입력한다.
OpenCV install
$ cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../install ../opencv: install 폴더에 debug 모드로 빌드하기 위해 generate$ make -j7: 빌드$ sudo make installmodule1 만들기(멤버 변수로 cvmat을 넣은 class를 하나 만들어서 opencv를 사용)
eigen install
$ cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../install ../eigen$ make -j7$ sudo make installmodule2에 eigen3를 랩핑하는 라이브러리 만들기

사용한 커맨드
| 명령어 | 설명 |
|---|---|
add_subdirectory | 하위 디렉토리의 CMakeLists.txt를 읽어들임 |
add_executable | 실행 파일을 생성 |
add_library | 라이브러리를 생성 |
find_package | 서드파티 라이브러리를 로드 |
target_include_directories | (?) 생성되는 파일이나 라이브러리의 헤더 파일을 연결 |
target_link_libraries | 타겟 파일 또는 타겟 라이브러리에 라이브러리를 링크 |
message | 디버깅 및 로깅에 사용 |
📙 강의