[c++] cmake / catkin / colcon

About_work·2024년 9월 4일
0

c++

목록 보기
6/8
  • Catkin, Colcon, and CMake는 C++ 프로그램을 빌드하는 데 사용되는 도구들이지만, 각기 다른 목적과 사용 사례에 맞게 설계되었습니다.
  • 이들을 비교하고, 예시를 통해 실제로 빌드를 수행하는 방법을 설명하겠습니다.

요약 비교

  • CMake: 일반적인 C++ 프로젝트를 빌드하는 데 사용됩니다. 간단하고 범용적이며, ROS와 독립적입니다.
  • Catkin: ROS 1에서 사용되는 빌드 도구로, ROS 패키지를 쉽게 관리하고 빌드할 수 있습니다.
  • Colcon: ROS 2에서 사용되는 빌드 도구로, 멀티 패키지 워크스페이스를 효과적으로 관리하며, ROS 2에 특화되어 있습니다.

1. CMake

  • CMake는 가장 기본적인 빌드 도구로, 여러 플랫폼에서 C++ 프로젝트를 관리하고 빌드하기 위해 설계
  • CMake는 CMakeLists.txt 파일을 통해 프로젝트의 빌드 구성을 정의

CMake 예시

  1. 프로젝트 구조

    my_project/
    ├── CMakeLists.txt
    └── src/
        └── main.cpp
  2. CMakeLists.txt 파일 작성

    cmake_minimum_required(VERSION 3.10)
    project(MyProject)
    
    set(CMAKE_CXX_STANDARD 11)
    
    add_executable(my_executable src/main.cpp)
  3. C++ 소스 파일 작성 (src/main.cpp)

    #include <iostream>
    
    int main() {
        std::cout << "Hello, CMake!" << std::endl;
        return 0;
    }
  4. 빌드 방법

    cd my_project
    mkdir build
    cd build
    cmake ..
    make
    ./my_executable

이렇게 하면 Hello, CMake!가 출력됩니다.


2. Catkin

  • Catkin은 ROS (Robot Operating System)에서 사용하는 빌드 시스템
  • Catkin은 CMake를 기반으로 하지만, ROS 패키지를 관리하고 빌드하는 데 특화되어 있음

Catkin 예시

  1. ROS 워크스페이스 생성

    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws/
    catkin_make
  2. 새 패키지 생성

    cd src
    catkin_create_pkg my_ros_package roscpp std_msgs
  3. 프로젝트 구조

    my_ros_package/
    ├── CMakeLists.txt
    ├── package.xml
    └── src/
        └── main.cpp
  4. CMakeLists.txt 수정
    Catkin에서는 대부분 자동으로 CMake 구성이 되어 있습니다. 단, 필요한 경우 일부 수정이 필요합니다.

    add_executable(my_ros_node src/main.cpp)
    target_link_libraries(my_ros_node ${catkin_LIBRARIES})
  5. 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;
    }
  6. 빌드 방법

    cd ~/catkin_ws/
    catkin_make
    source devel/setup.bash
    rosrun my_ros_package my_ros_node
  • Hello, Catkin!이 ROS 로그로 출력

3. Colcon

  • Colcon은 ROS 2에서 사용하는 빌드 도구로, 멀티 패키지 워크스페이스를 효과적으로 관리할 수 있도록 설계
  • Colcon은 ROS 2의 기본 빌드 도구이지만, 다른 프로젝트에도 사용할 수 있습니다.

Colcon 예시

  1. ROS 2 워크스페이스 생성

    mkdir -p ~/colcon_ws/src
    cd ~/colcon_ws/src
  2. 새 패키지 생성
    ROS 2에서는 ament_cmake 빌드 도구를 사용합니다.

    ros2 pkg create --build-type ament_cmake my_ros2_package --node-name my_node
  3. 프로젝트 구조

    my_ros2_package/
    ├── CMakeLists.txt
    ├── package.xml
    └── src/
        └── my_node.cpp
  4. 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;
    }
  5. 빌드 방법

    cd ~/colcon_ws
    colcon build
    source install/setup.bash
    ros2 run my_ros2_package my_node

Hello, Colcon!이 ROS 2 로그로 출력됩니다.

profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글