AimRT工作空间快捷搭建

资源准备

阅读说明

上一篇文章介绍的aimrt_template已经更新完第一个完整版本,有AimRT所有基础知识的示例,包括loggerchannelrpcexecutor等。
本篇文章将介绍aimrt_wkspace_template,一个创建AimRT工作空间的仓库。

目录

├── cmake ---------------------- // cmake工具包				
│   ├── GetAimRT.cmake --------- // 获取AimRT源码
│   └── NamespaceTool.cmake ---- // CMake命名空间方法
├── src ------------------------ // 子项目集
│   └── protocols -------------- // 协议包
├── tools ---------------------- // 工具
│   ├── change_workspace.sh ---- // 工作空间转移脚本(子项目添加到工作空间)
│   └── config_template.yaml --- // 子项目配置文件模板(aimrt_cli生成子项目)
├── build.sh ------------------- // 编译构建脚本
├── compile.sh ----------------- // 编译脚本(仅编译不重新构建)
├── pkg_start.sh --------------- // pkg启动脚本
├── setup.sh ------------------- // 环境变量更新脚本(使用ros2后端需要执行)
└── app_start.sh --------------- // app启动脚本

使用说明

创建工作空间

克隆源码并重命名为WkSpace

git clone https://github.com/wxnlP/aimrt_wkspace_template.git WkSpace

为脚本添加执行权限:

chmod +x build.sh compile.sh pkg_start.sh setup.sh app_start.sh tools/change_workspace.sh

编译源码:

默认编译打开了protobufros2支持,若不需要可以在build.sh注释。此外,所有下载源均是使用官方支持的gitee仓库,所以无需担心下载速度。默认编译选择使用ninja提速,可以自己修改使用make

./build.sh

工作空间配置(可选):

仓库默认提供的父级CMake命名空间为wkspace,项目名称为WorkSpace。在新建子项目时需要用到,所以建议想要更改的提前修改。

父级CMake命名空间修改src/CMakeLists.txt中的set_root_namespace("wkspace")

项目名称修改./CMakeLists.txt中的set(PROJECT_NAME WorkSpace)

添加子项目

仓库默认只提供protocols子项目,这是供开发者自定义协议使用的。添加子项目到工作空间需要借助aimrt_cli工具和tools/change_workspace.sh脚本。

进入tools目录进行操作:

cd tools

借助config_template.yaml模板生成一个子项目(保证子项目名称与文件中的project_name一致),例如:

aimrt_cli gen -p config_template.yaml -o template

转移工作空间:

# ./change_workspace.sh <子项目名称> <工作空间路径> <命名空间>
./change_workspace.sh ./template ~/aimrt_wkspace_template wkspace

找到子项目的CMakeLists.txt,例如src/template/CMakeLists.txt,做如下修改:

  • 删除install(建议删除)
  • 修改add_custom_target依赖的工作空间和输出路径,在此之前需要定义几个固定变量

修改内容:

  • 新增语法,放在add_custom_target前。
string(REGEX REPLACE ".*/\(.*\)" "\\1" CUR_DIR ${CMAKE_CURRENT_SOURCE_DIR})
# 获取当前目录的父级命名空间(不含当前)
get_namespace(CUR_SUPERIOR_NAMESPACE)
# 将命名空间的 "::" 换成 "_"
string(REPLACE "::" "_" CUR_SUPERIOR_NAMESPACE_UNDERLINE ${CUR_SUPERIOR_NAMESPACE})
  • 修改语法,使用变量替换。
# build all
add_custom_target(  
  ${CUR_SUPERIOR_NAMESPACE_UNDERLINE}_${CUR_DIR}_build_all ALL
  COMMAND ${CMAKE_COMMAND} -E copy_directory ${CUR_INSTALL_SOURCE_DIR}/bin ${CMAKE_BINARY_DIR}
  DEPENDS aimrt::runtime::main
          ${CUR_SUPERIOR_NAMESPACE}::${CUR_DIR}::pb_pkg
          ${CUR_SUPERIOR_NAMESPACE}::${CUR_DIR}::ros2_pkg
          ${CUR_SUPERIOR_NAMESPACE}::${CUR_DIR}::publisher_pkg
          ${CUR_SUPERIOR_NAMESPACE}::${CUR_DIR}::subscriber_pkg)
NAMESPACE}::${CUR_DIR}::publisher_pkg
          ${CUR_SUPERIOR_NAMESPACE}::${CUR_DIR}::subscriber_pkg)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值