CMakeLists.txt 파일을 통해 프로젝트의 빌드 구성을 정의
프로젝트 구조
my_project/
├── CMakeLists.txt
└── src/
└── main.cpp
CMakeLists.txt 파일 작성
cmake_minimum_required(VERSION 3.10)
project(MyProject)
set(CMAKE_CXX_STANDARD 11)
add_executable(my_executable src/main.cpp)
C++ 소스 파일 작성 (src/main.cpp)
#include <iostream>
int main() {
std::cout << "Hello, CMake!" << std::endl;
return 0;
}
빌드 방법
cd my_project
mkdir build
cd build
cmake ..
make
./my_executable
이렇게 하면 Hello, CMake!
가 출력됩니다.
ROS 워크스페이스 생성
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
새 패키지 생성
cd src
catkin_create_pkg my_ros_package roscpp std_msgs
프로젝트 구조
my_ros_package/
├── CMakeLists.txt
├── package.xml
└── src/
└── main.cpp
CMakeLists.txt 수정
Catkin에서는 대부분 자동으로 CMake 구성이 되어 있습니다. 단, 필요한 경우 일부 수정이 필요합니다.
add_executable(my_ros_node src/main.cpp)
target_link_libraries(my_ros_node ${catkin_LIBRARIES})
C++ 소스 파일 작성 (src/main.cpp)
#include <ros/ros.h>
#include <std_msgs/String.h>
int main(int argc, char **argv) {
ros::init(argc, argv, "my_ros_node");
ros::NodeHandle nh;
ROS_INFO("Hello, Catkin!");
return 0;
}
빌드 방법
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
rosrun my_ros_package my_ros_node
Hello, Catkin!
이 ROS 로그로 출력ROS 2 워크스페이스 생성
mkdir -p ~/colcon_ws/src
cd ~/colcon_ws/src
새 패키지 생성
ROS 2에서는 ament_cmake
빌드 도구를 사용합니다.
ros2 pkg create --build-type ament_cmake my_ros2_package --node-name my_node
프로젝트 구조
my_ros2_package/
├── CMakeLists.txt
├── package.xml
└── src/
└── my_node.cpp
C++ 소스 파일 작성 (src/my_node.cpp)
#include <rclcpp/rclcpp.hpp>
class MyNode : public rclcpp::Node {
public:
MyNode() : Node("my_node") {
RCLCPP_INFO(this->get_logger(), "Hello, Colcon!");
}
};
int main(int argc, char **argv) {
rclcpp::init(argc, argv);
rclcpp::spin(std::make_shared<MyNode>());
rclcpp::shutdown();
return 0;
}
빌드 방법
cd ~/colcon_ws
colcon build
source install/setup.bash
ros2 run my_ros2_package my_node
Hello, Colcon!
이 ROS 2 로그로 출력됩니다.