하루의 쉼터

[ROS] CMakeList.txt 파일에 관하여 본문

프로그래밍/ROS

[ROS] CMakeList.txt 파일에 관하여

Changun An 2022. 2. 15. 16:54
반응형

| [ROS] CMakeList.txt 파일에 관하여

OutLine :

CMakeList.txt 파일에 대하여 정확히 알고 사용하자.

 

2021.09.16 - [프로그래밍 - 개발/ROS] - [ROS] catkin_ws 구조에 관하여

 

[ROS] catkin_ws 구조에 관하여

| catkin_ws 구조에 관하여 알아보자 1. Outline ROS를 사용 하기 위해서 관련된 작업환경을 만든 후 catkin_ws에 작업하게 된다. 그렇다면 catkin_ws는 무슨 구조이며 어떤 것을 의미하는지 알아보자. 2. What

changun516.tistory.com

 

cmake_minmum_required(VERSION x.x.x) : 최소 CMake 버전 요구사항

* ros kinetic 이상에서 지원 되는 c++11은 아래와 같이 추가한다.

add_compile_options(-std=c++11)

 

Project(name) : 패키지 이름

* 아래에서 ${PROJECT_NAME}을 변수로 정의하여 사용할 수 있다.

find_package : 빌드를 위해 필요한 다른 CMake/Catkin 패키지 찾기

아래와 같이 의존 패키지를 기술하여 사용할 수 있는데

find_package(catkin REQUIRED COMPONENTS roscpp std_msgs)

밑에 처럼 사용해도 가능하다.

find_package(catkin REQUIRED)
find_package(roscpp REQIIRED)
find_package(std_msgs REQUIRED)

다만 환경 변수 설정이 다르게 되므로 별도의 환경 변수를 잡아줄 것이 아니라면 첫번째 예시처럼 쓰는 것이 편리할 것이다.

* C++ Boost를 사용하려면 아래와 같이 추가해주면 된다.

find_package(Boost REQUIRED COMPONENTS (*Technology to use))

include_directories : include 경로 및 library 경로

타겟을 정의하기 전에 빌드에 필요한 include 파일 이나 library등 경로에 대한 정보를 명시해줘야한다.

* include 패키지 내 경로 

catkin_package : catkin 관련 정보를 빌드 시스템에 전달한다. 

* 필수로 add_library() or add_excutable()로 빌드 타겟을 선언하기 전에 호출하여야한다.

아래는 catkin_package가 가지는 인자 설명이다.

- INCLUDE_DIRS : 패키지 include 경로

- LIBRARIES : 프로젝트 라이브러리 결과물

- CATKIN_DEPENDS : 의존성을 가진 다른 catkin_project

- DEPENDS : 의존성을 가진  Non-catkin CMake project 

- CFG_EXTRAS : 기타 설정 옵션

add_library : Cmake 함수를 이용하여 빌드할 라이브러리를 정의.

add_dependencies : Target간 의존성 정의

최상단 target간 의존성 정의

target_link_libraries : 실행 파일 타겟과 링크될 라이브러리 지정

(<target> <Library>...)

add_definitions : 전처리기 매크로 추가

add_executable : 실행파일 타겟

(<Target> <file> <file>...)

add_library : 라이브러리 타겟, CMake를 이용하여 빌드할 라이브러리를 명시

($(PROJECT_NAME) ${${PROJECT_NAME}_SRCS})

반응형
Comments