[ROS2] 빌드 설정 파일(CMakeLists.txt)
CMakeLists.txt 파일이란?
ROS2의 빌드 시스템은 ament에서는 C++ 프로그래밍 언어를 사용한 패키지나 RQt Plugin의 경우 CMake (Cross Platform Make)를 이용하고 있고 패키지 폴더의 CMakeLists.txt 파일에 빌드 환경을 기술해 사용하고 있다. 이 빌드 설정 파일에 생성, 의존성 패키지 우선 빌드, 링크 생성 등을 설정한다.
명령어
1. add_ececutable() - 빌드 대상 바이너리 추가
이 함수는 실행 가능한 바이너리를 생성하는 데 사용된다. 주어진 소스 파일들을 컴파일하여 실행 가능한 프로그램을 생성한다.
add_executable( <실행_파일명> <소스_파일> <소스_파일> ... )
add_executable(my_node src/my_node.cpp)
2. ament_target_dependencies() - 패키지 간 의존성 관리
이 함수는 빌드 타겟이 다른 패키지에 종속되어 있는 경우에 사용된다. ROS 2에서는 패키지 간의 의존성을 관리하기 위해 사용된다.
ament_target_dependencies(<실행_파일명> <종속성1> <종속성2> ... )
ament_target_dependencies(my_node rclcpp std_msgs)
3. install() - 설치 매크로(make install) 정의
install은 빌드한 파일들을 시스템에 설치하는 데 사용된다. 이것은 보통 패키지의 라이브러리, 실행 파일, 헤더 파일 등을 시스템의 적절한 위치로 복사하여 다른 프로젝트에서 사용할 수 있도록 하는 과정이다. install 명령은 패키지를 빌드하고 나면 빌드된 파일들을 설치할 위치를 지정한다.
일반적으로 CMakeLists.txt 파일의 install 부분은 다음과 같은 구조를 가진다.
install(
TARGETS my_library
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
)
install(
TARGETS <Target_목록>
ARCHIVE DESTINATION <아카이브_설치_경로>
LIBRARY DESTINATION <라이브러리_설치_경로>
RUNTIME DESTINATION <바이너리_설치_경로>
)