通常ノード

cmake_minimum_required(VERSION 3.5)
#プロジェクト名
project(プロジェクト名)

#c++バージョン等の設定
if(NOT CMAKE_CXX_STANDARD)
  set(CMAKE_CXX_STANDARD 17)
endif()

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

#使用するpackageを記載
#ament_auto_find_build_dependencies()を使うと一つ一つ書かなくてもpackage.xmlファイルに記載したpackageを自動でやってくれる
find_package(ament_cmake_auto REQUIRED)
ament_auto_find_build_dependencies()

#ノード名とcppファイルを記載
#${PROJECT_NAME}と書くとプロジェクト名と同じになる
ament_auto_add_executable(ノード名 src/main.cpp)

if(BUILD_TESTING)
  find_package(ament_lint_auto REQUIRED)
  ament_lint_auto_find_test_dependencies()
endif()

#shareディレクトリに置くファイルを格納しているディレクトリを記載
install(DIRECTORY
  #config
	#launch
	#rviz
	#urdf
	#world
	#xacro
	#︙
  DESTINATION share/${PROJECT_NAME}/
)

ament_auto_package()

コンポーザブルノード

cmake_minimum_required(VERSION 3.5)
project(プロジェクト名)

# Default to C99
if(NOT CMAKE_C_STANDARD)
  set(CMAKE_C_STANDARD 99)
endif()

# Default to C++17
if(NOT CMAKE_CXX_STANDARD)
  set(CMAKE_CXX_STANDARD 17)
endif()

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

# find dependencies
find_package(ament_cmake_auto REQUIRED)
ament_auto_find_build_dependencies()

# create component
ament_auto_add_library(${PROJECT_NAME}_component SHARED
  src/${PROJECT_NAME}_component.cpp
)
target_include_directories(${PROJECT_NAME}_component PRIVATE include)

rclcpp_components_register_node(${PROJECT_NAME}_component
  PLUGIN      "クラス名"
  EXECUTABLE  ${PROJECT_NAME}
)

# install config
install(
  DIRECTORY config
  DESTINATION share/${PROJECT_NAME}/
)

# build testing
if(BUILD_TESTING)
  find_package(ament_lint_auto REQUIRED)
  ament_lint_auto_find_test_dependencies()
endif()

ament_auto_package()

メッセージ作成

cmake_minimum_required(VERSION 3.8)
project(プロジェクト名)

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

# find dependencies
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)

find_package(ament_cmake_auto REQUIRED)
ament_auto_find_build_dependencies()

set(msg_files
  "msg/メッセージファイル名.msg"
)
rosidl_generate_interfaces(${PROJECT_NAME}
  ${msg_files}
  DEPENDENCIES std_msgs geometry_msgs
)
ament_export_dependencies(rosidl_default_runtime)

if(BUILD_TESTING)
  find_package(ament_lint_auto REQUIRED)
  ament_lint_auto_find_test_dependencies()
endif()

ament_package()

ヘッダーオンリーライブラリ例

cmake_minimum_required(VERSION 3.5)
project(プロジェクト名)

# Default to C99
if(NOT CMAKE_C_STANDARD)
  set(CMAKE_C_STANDARD 99)
endif()

# Default to C++17
if(NOT CMAKE_CXX_STANDARD)
  set(CMAKE_CXX_STANDARD 17)
endif()

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

# find dependencies
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(tf2 REQUIRED)
find_package(tf2_ros REQUIRED)
find_package(tf2_geometry_msgs REQUIRED)
find_package(geometry_msgs REQUIRED)
find_package(cpp_general_ament REQUIRED)

# create library
add_library(${PROJECT_NAME} INTERFACE)

ament_target_dependencies(${PROJECT_NAME} INTERFACE
  rclcpp
  tf2
  tf2_ros
  tf2_geometry_msgs
  geometry_msgs
  cpp_general_ament
)

# install library
install(
  DIRECTORY   include/
  DESTINATION include
)

install(
  TARGETS   ${PROJECT_NAME}
  EXPORT    export_${PROJECT_NAME}
  LIBRARY   DESTINATION lib
  ARCHIVE   DESTINATION lib
  RUNTIME   DESTINATION bin
  INCLUDES  DESTINATION include
)

# export ament library
ament_export_targets(export_${PROJECT_NAME} HAS_LIBRARY_TARGET)
ament_export_dependencies(
  rclcpp
  tf2
  tf2_ros
  tf2_geometry_msgs
  geometry_msgs
  cpp_general_ament
)

ament_package()

メモ

CmakeLists.txt,package.xmlテンプレート