[ROS] package.xml 와 CMakeList
패키지 설정 파일
- package.xml : 패키지의 정보를 담은 XML 파일
구문별 설명
<?xml>
: 문서 문법으러 정의하는 문구로 아래의 내용은 xml 버전 1.0 을 따르고 있다는 것을 알린다.
<?xml version="1.0?>
<package>
: 이 구문부터 맨 끝</package>
까지가 ROS 패키지 설정 부분이다.
<package format="2">
<!-- %Tag(NAME)% -->
<name>beginner_tutorials</name>
...
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>
<!-- %EndTag(DEPS)% -->
<!-- %Tag(EXPORT)% -->
<!-- %EndTag(EXPORT)% -->
</package>
<name>
: 패키지의 이름이다. 패키지를 설정할 때 입력한 패키지의 이름이 사용된다. 다른 옵션도 마찬가지지만 이는 사용자가 원할 때 언제든지 변경할 수 있다.
<name>beginner_tutorials</name>
<version>
: 패키지의 버전이다. 자유롭게 지정할 수 있다.
<version>0.1.0</version>
<description>
: 패키지의 간단한 설명이다. 보통 2~3 문장으로 기술한다.
<description>The beginner_tutorials package</description>
<maintainer>
: 패키지 관리자의 이름과 이메일 주소를 기재한다.
<maintainer email="obo314@icloud.com">obo</maintainer>
<license>
:라이센스를 기재한다. BSC, MIT,Apache, GPLv3, LGPLv3등을 기재하면 된다.
<license>BSD</license>
<url>
: 패키지를 설명하는 웹 페이지 또는 버그 관리, 저장소 등의 주소를 기재한다.
<url type="website">http://github.com/happyOBO/ros/beginner_tutorials</url>
<author>
: 패키지 개발에 참여한 개발자의 이름과 이메일 주소를 적는다. 복수의 개발자가 참여한 경우에는 태그를 추가로 넣어주면 된다.
<author email="you@yourdomain.tld">Jane Doe</author>
<buildtool_depend>
: 빌드 시스템의 의존성을 기술한다. 지금은 캐킨 빌드 시스템을 이용하고 있으므로 캐킨을 입력한다.
<buildtool_depend>catkin</buildtool_depend>
<build_depend>
: 패키지를 빌드할 때 의존하는 패키지 이름을 적는다.
<build_depend>roscpp</build_depend>
<exec_depend>
: 패키지를 실행할 때 의존하는 패키지 이름을 적는다.
<exec_depend>roscpp</exec_depend>
빌드 설정 파일
- ROS의 빌드 시스템인 캐킨은 기본적으로 CMake 를 이용하고 있어서 패키지 폴더의 CMakeLists.txt라는 파일에 빌드환경을 기술할 수 있다.
- 실행 파일 생성, 의존성 패키지 우선 빌드, 링크 생성등을 설정하게 되었다.
구문별 설명
- cmake 요구 버전 명시
cmake_minimum_required(VERSION 2.8.3)
- project 항목은 패키지 이름이다. package.xml에서 입력한 패키지 이름 사용
project(beginner_tutorials)
- 캐킨 빌드할 때 요구되는 구성 요소 패키지이다.
## Find catkin and any catkin packages
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
genmsg)
- 메시지 파일을 추가하는 옵션. FILES를 사용하면 현재 패키지 폴더의 msg 폴더 안의 .msg 파일들을 참조하여 헤더 파일을 자동으로 생성
- 서비스 파일을 추가하는 옵션, FILES를 사용하면 현재 패키지 폴더의 srv 폴더 안의 .srv 파일들을 참조
## Declare ROS messages and services
add_message_files(FILES Num.msg)
add_service_files(FILES AddTwoInts.srv)
- 의존하는 메세지 설정,
## Generate added messages and services
## 디펜던시에 의해 해당 메시지 패키지를 사용하겠다는 설정
generate_messages(DEPENDENCIES std_msgs)
## Declare a catkin package
catkin_package()
## Build talker and listener
include_directories(include ${catkin_INCLUDE_DIRS})
add_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
add_dependencies(talker beginner_tutorials_generate_messages_cpp)
add_executable(listener src/listener.cpp)
target_link_libraries(listener ${catkin_LIBRARIES})
add_dependencies(listener beginner_tutorials_generate_messages_cpp)
# %EndTag(FULLTEXT)%