CmakeLists.txt

通常使用

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

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

include_directories("../common/")

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()

cpp_generalを使う場合

cmake_minimum_required(VERSION 3.5)
#プロジェクト名
project(プロジェクト名)
#includeディレクトリを追加
include_directories("../../common/")
#cppファイルを記載
file(GLOB abu2023_cpp_general_cpp
  "../../common/ABU2023_cpp_general/control/*.cpp"
  "../../common/ABU2023_cpp_general/control/route/**.cpp"
  "../../common/ABU2023_cpp_general/control/kinematics/*.cpp"
  "../../common/ABU2023_cpp_general/filter/*.cpp"
  "../../common/ABU2023_cpp_general/utility/*.cpp"
  "../../common/ABU2023_cpp_general/utility/types/*.cpp"
  "../../common/ABU2023_cpp_general/utility/types/vector/*.cpp"
  "../../common/ABU2023_cpp_general/utility/unit/*.cpp"
)
#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 ${abu2023_cpp_general_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()

package.xml

C++

<?xml version="1.0"?>
<?xml-model href="<http://download.ros.org/schema/package_format3.xsd>" schematypens="<http://www.w3.org/2001/XMLSchema>"?>
<package format="3">
  <name>パッケージ名</name>
  <version>0.0.0</version>
  <description>TODO: Package description</description>
  <maintainer email="mailアドレス@gmail.com">作成者名</maintainer>
  <license>TODO: License declaration</license>
	
  <buildtool_depend>ament_cmake</buildtool_depend>

	<!--使用するパッケージ-->
  <depend>rclcpp</depend>
  <depend>rclcpp_components</depend>
  <depend>std_msgs</depend>
	
	<!--おまじない-->
  <test_depend>ament_lint_auto</test_depend>
  <test_depend>ament_lint_common</test_depend>

	<!--ビルド設定等-->
  <export>
    <build_type>ament_cmake</build_type>
		<!--Gazeboで使用するメッシュファイル等のファイルパスを記載-->
		<!--Gazeboで自作フィールドを使わない場合は不要-->
		<gazebo_ros gazebo_media_path="${prefix}/field" />
	  <gazebo_ros gazebo_model_path="${prefix}/field"/>
  </export>
</package>

python

<?xml version="1.0"?>
<?xml-model href="<http://download.ros.org/schema/package_format3.xsd>" schematypens="<http://www.w3.org/2001/XMLSchema>"?>
<package format="3">
  <name>パッケージ名</name>
  <version>0.0.0</version>
  <description>TODO: Package description</description>
  <maintainer email="mailアドレス@gmail.com">作成者名</maintainer>
  <license>TODO: License declaration</license>
	<!--余計なものは書かない-->
	<!--ビルド設定等-->
  <export>
    <build_type>ament_python</build_type>
  </export>
</package>
Footer