Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5567783
  • 博文数量: 1310
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 15646
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1310)

文章存档

2020年(92)

2019年(193)

2018年(81)

2017年(80)

2016年(70)

2015年(52)

2014年(41)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: 其他平台

2020-06-17 19:39:30

Creating a package

ros2 pkg create  --dependencies [deps]
ros2 pkg create --dependencies [deps] --build-type ament_python
ros2 pkg create  --dependencies [deps] --build-type ament_cmake
--------------------------------------------------------------------------------------------------------------
CMakeFiles.txt 修改
ament_target_dependencies( [dependencies])
在 ament_package()前加入
 
# Install launch files install( DIRECTORY launch DESTINATION share/${PROJECT_NAME} ) # Install nodes install( TARGETS [node-names] DESTINATION lib/${PROJECT_NAME} )
#######################################################################3
colcon build --symlink-install  用于一些python 和资源文件等等无需编译文件被修改的情况, .
#######################################################################
https://index.ros.org/doc/ros2/Tutorials/Ament-CMake-Documentation/
ament_cmake 是ROS2基于CMake的一个编译系统. 
类似Shell脚本, 里边可以定义自定义宏以及自定义函数 
ros2 pkg create  会产生 package.xml 以及 CMakeLists.txt 
package.xml: 包含所有依赖项和一些元数据,以便让colcon为您的包找到正确的构建顺序,
以便在CI中安装所需的依赖项,并为bloom发布提供信息
CMakeLists.txt :用于构建和打包可执行文件和库的命令
CMakeLists.txt 解析: project : 报名, package_name, 必须和 package.xml 相同.
一些通用的编译选项
-Wall -Wextra -Wpedantic 是必须的 
-Wshadow -Werror 建议使用.
target_compile_options(my_target PRIVATE -Wshadow -Werror)
#####################
ament_package(): 放在 CMakeLists.txt最后. 项目必须调用一次, 用于建立项目. 
    类似于Makeifle中的 make all. 他从 CMakeLists.txt 前面搜集很多信息,
ament_package 需要的参数
    CONFIG_EXTRAS: 一些 CMake文件的列表, 最先include进来
    ${PROJECT_NAME}_CONFIG_EXTRAS:  第二被include进来
    ${PROJECT_NAME}_CONFIG_EXTRAS_POST  第三被include进来
    CONFIG_EXTRAS_POST: 一些 CMake文件的列表, 最后 include 进来

添加头文件
target_include_directories(my_target 
    PUBLIC 
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> 
    $<INSTALL_INTERFACE:include>
)
增加依赖
find_package(Eigen3 REQUIRED) 
ament_target_dependencies(my_target Eigen3)
或者使用
 
find_package(Eigen3 REQUIRED) 
target_link_libraries(my_target Eigen3::Eigen)

###################################################
建立一个库
ament_export_interfaces(export_my_library HAS_LIBRARY_TARGET)
ament_export_dependencies(some_dependency)

install(
  DIRECTORY include/
  DESTINATION include
)


install(
  TARGETS my_library
  EXPORT export_my_library
  LIBRARY DESTINATION lib
  ARCHIVE DESTINATION lib
  RUNTIME DESTINATION bin
  INCLUDES DESTINATION include
) 
ament_export_include_directories(include) 
ament_export_libraries(my_library)
 
添加一个executable, 相同流程.




                                   
阅读(92) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~