Ubuntu 22.04 源码构建
必选依赖
CMake
AimRT 编译所需的最小 CMake 版本为 3.24,Ubuntu 22.04 使用 apt 包管理器安装的 CMake 版本为 3.22 不符合要求,请前往 CMake 官方网站 下载对应版本进行安装。
推荐的安装方式有两种
- 通过 pip 安装 CMake 
sudo apt install python3 python3-pip
pip install cmake --upgrade
- 安装 CMake 官方提供的安装脚本 
wget https://github.com/Kitware/CMake/releases/download/v3.30.4/cmake-3.30.4-linux-x86_64.sh
sudo bash cmake-3.30.4-linux-x86_64.sh --prefix=/usr/local --skip-license
make/gcc/g++
Ubuntu 22.04 中 apt 源自带的 gcc 版本为 11.4,适用于 AimRT 构建所用,可以直接安装
sudo apt install make gcc g++
最小化构建
将以上内容进行安装后即可进行无外部依赖的最小化构建,构建选项如下所示
cmake -B build \
    -DCMAKE_BUILD_TYPE=Release \
    -DAIMRT_INSTALL=ON \
    -DCMAKE_INSTALL_PREFIX=./build/install \
    -DAIMRT_BUILD_TESTS=OFF \
    -DAIMRT_BUILD_EXAMPLES=ON \
    -DAIMRT_BUILD_PROTOCOLS=ON \
    -DAIMRT_BUILD_DOCUMENT=OFF \
    -DAIMRT_BUILD_RUNTIME=ON \
    -DAIMRT_BUILD_CLI_TOOLS=OFF \
    -DAIMRT_BUILD_PYTHON_RUNTIME=OFF \
    -DAIMRT_USE_FMT_LIB=ON \
    -DAIMRT_BUILD_WITH_PROTOBUF=ON \
    -DAIMRT_USE_LOCAL_PROTOC_COMPILER=OFF \
    -DAIMRT_USE_PROTOC_PYTHON_PLUGIN=OFF \
    -DAIMRT_BUILD_WITH_ROS2=OFF \
    -DAIMRT_BUILD_NET_PLUGIN=ON \
    -DAIMRT_BUILD_MQTT_PLUGIN=OFF \
    -DAIMRT_BUILD_ZENOH_PLUGIN=OFF \
    -DAIMRT_BUILD_ICEORYX_PLUGIN=OFF \
    -DAIMRT_BUILD_ROS2_PLUGIN=OFF \
    -DAIMRT_BUILD_RECORD_PLAYBACK_PLUGIN=ON \
    -DAIMRT_BUILD_TIME_MANIPULATOR_PLUGIN=ON \
    -DAIMRT_BUILD_PARAMETER_PLUGIN=ON \
    -DAIMRT_BUILD_LOG_CONTROL_PLUGIN=ON \
    -DAIMRT_BUILD_TOPIC_LOGGER_PLUGIN=ON \
    -DAIMRT_BUILD_OPENTELEMETRY_PLUGIN=ON \
    -DAIMRT_BUILD_GRPC_PLUGIN=ON \
    -DAIMRT_BUILD_PYTHON_PACKAGE=OFF
cmake --build build --config Release --target all -j
如果要开启其他选项则需要安装对应依赖,具体依赖请参考 可选依赖
可选依赖
Python 功能及其相关包
AimRT 所使用的 Python 版本最低为 3.10,推荐使用 3.10 版本(Ubuntu 22.04 的 apt 源安装版本)。
AimRT 的 Python 接口依赖 Python 3。
sudo apt install python3
aimrt_cli 工具依赖 Python 3 以及 pyinstaller jinja2 pyyaml 三个库,可以通过以下命令进行安装
sudo apt install python3 python3-pip
pip install pyinstaller jinja2 pyyaml --upgrade
打包生成 aimrt_py 的 whl 包功能依赖 Python 3 以及 build setuptools wheel 等库,可以通过以下命令进行安装
sudo apt install python3 python3-pip
pip install build setuptools wheel --upgrade
以上内容分别对应以下选项
-DAIMRT_BUILD_PYTHON_RUNTIME=ON
-DAIMRT_BUILD_CLI_TOOLS=ON
-DAIMRT_BUILD_PYTHON_PACKAGE=ON
ROS2 相关依赖
AimRT 的 ROS2 相关功能以及 ROS2 插件依赖 ROS2 humble 版本(仅支持该版本),可以参考 ROS2 官方文档 进行安装。
安装完成后需要设置好相应的环境变量,即
source /opt/ros/humble/setup.bash
可以通过以下命令检查是否设置好相应的环境变量
printenv | grep -i ROS
ROS2 相关依赖对应以下选项
-DAIMRT_BUILD_WITH_ROS2=ON
-DAIMRT_BUILD_ROS2_PLUGIN=ON
Iceoryx 相关依赖
AimRT 的 Iceoryx 插件依赖 acl 库,可以通过以下命令进行安装
sudo apt install libacl1-dev
Iceoryx 相关依赖对应以下选项
-DAIMRT_BUILD_ICEORYX_PLUGIN=ON
Zenoh 相关依赖
AimRT 的 Zenoh 插件依赖本地的 rust 环境,可以通过以下命令进行安装
sudo apt install curl
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Zenoh 相关依赖对应以下选项
-DAIMRT_BUILD_ZENOH_PLUGIN=ON
MQTT 相关依赖
AimRT 的 MQTT 插件依赖 openssl 库,可以通过以下命令进行安装
sudo apt install libssl-dev
MQTT 相关依赖对应以下选项
-DAIMRT_BUILD_MQTT_PLUGIN=ON
完整构建
将以上内容进行安装后即可进行完整构建,可以直接运行根目录下的 build.sh 脚本进行构建
./build.sh
AimRT 在构建过程中会使用 FetchContent 从 github 上拉取依赖,如果网络环境不佳,可以使用以下命令将 FetchContent 的源替换为从 gitee 镜像拉取再进行构建
source url_cn.bashrc
./build.sh $AIMRT_DOWNLOAD_FLAGS