일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- C++
- 리눅스
- Subscribe
- ros
- 기초
- topic
- ubuntu
- JungOl
- C언어
- 프로그래밍
- 오늘도 우라라
- 우분투
- install opencv-4.4.0 on ubuntu 22.04
- 등차수열
- 토픽
- 마리아 DB
- mariaDB
- 그랑사가
- publish
- MSG
- 오늘도 우라라 펫
- 환경설정
- 반복문
- while
- 오늘도 우라라 펫 공략
- mysql
- 데이터 베이스
- Linux
- 오늘도 우라라 공략
- LeetCode
- Today
- Total
하루의 쉼터
[ROS] CMakeList.txt 파일에 관하여 본문
| [ROS] CMakeList.txt 파일에 관하여
OutLine :
CMakeList.txt 파일에 대하여 정확히 알고 사용하자.
2021.09.16 - [프로그래밍 - 개발/ROS] - [ROS] catkin_ws 구조에 관하여
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})
'프로그래밍 > ROS' 카테고리의 다른 글
[VisualCode] #include errors detected. Please update your includePath. Squiggles are disabled for this translation unit (2) | 2023.04.06 |
---|---|
[Windows] ubuntu20.04 설치 에러 0x800701bc (2) | 2023.04.06 |
[ROS] 노드 종료 rosnode kill (0) | 2021.11.01 |
[ROS] 패키지 단위 컴파일 (0) | 2021.05.03 |
[ERROR] invalid message type: (0) | 2021.03.08 |