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