Skip to content

1. 概述

Eclipse Cyclone DDS 使用 CMake 作为构建系统。除了标准的 CMAKE_BUILD_TYPE 等选项外,项目提供了一系列特定的 -D 标志,用于控制功能模块的编译、依赖项的查找以及特定 QoS 策略的支持。合理配置这些选项可以优化二进制文件的大小、适应特定的运行环境(如嵌入式系统)或满足安全合规要求。

2. 构建目标与工具配置

以下选项控制示例程序、测试套件及辅助工具的构建。

配置选项 详细解释
-DBUILD_EXAMPLES=ON 构建包含的示例程序。适用于学习 API 用法或验证安装。
-DBUILD_TESTING=ON 构建测试套件。
注意:启用此选项将强制从库中导出所有符号(export all symbols),可能会增加二进制文件大小并影响链接行为。
-DBUILD_IDLC=NO 禁用构建 IDL 编译器 (idlc)。
影响:若禁用,将无法编译新的 IDL 文件,进而导致依赖 IDL 编译的示例、测试及 ddsperf 工具无法构建。
-DBUILD_DDSPERF=NO 禁用构建 ddsperf 性能测量工具。该工具用于基准测试和性能分析。
-DBUILD_IDLC_XTESTS=NO 包含针对 IDL 编译器的额外测试集。
机制:在运行时使用 C 后端动态编译 IDL 文件,并构建测试应用程序。
限制:不支持 Windows 平台。

3. 外部依赖与核心功能

以下选项控制对第三方库(如 OpenSSL, Iceoryx)的查找及相关核心功能的启用。

3.1 安全与加密 (OpenSSL)

配置选项 说明
-DENABLE_SSL=NO 禁用 OpenSSL 支持
1. 停止查找 OpenSSL 库。
2. 移除 TLS/TCP 传输支持。
3. 不构建实现身份验证和数据加密的安全插件。
默认值AUTO(若检测到 OpenSSL 则自动启用)。
-DENABLE_SECURITY=NO 禁用安全接口
1. 不在核心代码中构建安全接口和钩子。
2. 不构建相关安全插件。
注意:即使未启用 SSL (ENABLE_SSL=NO),理论上仍可启用此选项以加载第三方安全插件,但通常需配合使用。

3.2 高性能共享内存 (Iceoryx)

配置选项 说明
-DENABLE_ICEORYX=NO 禁用共享内存传输
1. 停止查找 Eclipse Iceoryx 库。
2. 禁用同机进程间的零拷贝共享内存通信机制。
默认值AUTO(若检测到 Iceoryx 则自动启用)。

4. QoS 策略与协议特性裁剪

对于资源受限的嵌入式环境,可以通过禁用特定的 QoS 策略或协议特性来减小代码体积。

配置选项 功能描述 依赖/关联限制
-DENABLE_LIFESPAN=NO 排除对 Lifespan QoS(数据有效期)的支持。
-DENABLE_DEADLINE_MISSED=NO 排除对 Deadline QoS(截止期限)的支持。
-DENABLE_TYPELIB=NO 排除对类型库的支持。 必须同时设置
-DENABLE_TYPE_DISCOVERY=NO
-DENABLE_TOPIC_DISCOVERY=NO
-DENABLE_TYPE_DISCOVERY=NO 排除类型发现及类型兼容性检查(涵盖大部分 XTypes 功能)。 必须同时设置
-DENABLE_TOPIC_DISCOVERY=NO
-DENABLE_TOPIC_DISCOVERY=NO 排除主题发现支持。 无独立强依赖,但常被上述选项联动禁用。
-DENABLE_SOURCE_SPECIFIC_MULTICAST=NO 禁用源特定多播 (SSM) 支持。 QNX 平台建议:可能需要同时禁用 IPv6 (-DENABLE_IPV6=NO)。
-DENABLE_IPV6=NO 禁用 IPv6 协议支持。 QNX 平台建议:可能需要同时禁用 SSM (-DENABLE_SOURCE_SPECIFIC_MULTICAST=NO)。

5. 配置组合建议

5.1 最小化嵌入式构建

若需在资源极度受限的设备上运行,且仅需基本的发布/订阅功能:

bash
cmake -B build \
  -DCMAKE_BUILD_TYPE=Release \
  -DBUILD_EXAMPLES=OFF \
  -DBUILD_TESTING=OFF \
  -DBUILD_DDSPERF=OFF \
  -DENABLE_SSL=NO \
  -DENABLE_ICEORYX=NO \
  -DENABLE_SECURITY=NO \
  -DENABLE_LIFESPAN=NO \
  -DENABLE_DEADLINE_MISSED=NO \
  -DENABLE_TYPE_DISCOVERY=NO \
  -DENABLE_TOPIC_DISCOVERY=NO \
  -DENABLE_IPV6=NO

5.2 安全增强构建

若需完整的安全特性(认证、加密、访问控制):

bash
cmake -B build \
  -DENABLE_SSL=ON \
  -DENABLE_SECURITY=ON \
  -DBUILD_TESTING=ON

前提:系统已安装 OpenSSL 开发库。

5.3 高性能同机通信构建

若主要应用场景为单节点内多进程通信:

bash
cmake -B build \
  -DENABLE_ICEORYX=ON \
  -DBUILD_EXAMPLES=ON

前提:系统已安装 Eclipse Iceoryx 库。

6. 注意事项

  1. 依赖连锁反应:禁用 BUILD_IDLC 会导致无法生成代码,从而使依赖生成代码的 BUILD_EXAMPLESBUILD_TESTINGBUILD_DDSPERF 失败。通常建议保留 IDLC 或手动预生成代码。
  2. 类型系统完整性:禁用类型发现 (ENABLE_TYPE_DISCOVERY) 会严重影响动态类型处理能力,若应用依赖 XTypes 特性,请勿禁用此项。
  3. 平台特异性:在 QNX 等实时操作系统上构建时,网络协议栈的实现可能要求同时禁用 IPv6 和源特定多播,需参考具体平台的构建文档。

基于 VitePress 构建