资源准备
阅读说明
上一篇文章介绍的aimrt_template已经更新完第一个完整版本,有AimRT所有基础知识的示例,包括logger、channel、rpc、executor等。
本篇文章将介绍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
编译源码:
默认编译打开了
protobuf和ros2支持,若不需要可以在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)
1093

被折叠的 条评论
为什么被折叠?



