5 CMake编译宏介绍

5.1 概述

ag_driver 工程目录下的 CMakeLists.txt 中,定义了一组条件编译宏,可以改变编译 ag_driver 的目标和行为。

5.2 指定编译目标的宏

ag_driver 的编译目标包括:

  • 示例程序,包括 demo_onlinedemo_pcap 等。

  • 小工具,包括点云可视化工具 ag_driver_viewer、将点云保存为 PCD 文件的工具 ag_driver_pcdsaver、将点云转换为深度图像的工具 ag_image_tool 等。

5.2.1 COMPILE_DEMOS

COMPILE_DEMOS 指定是否编译示例程序。

  • COMPILE_DEMOS=OFF,不编译。这是默认值。

  • COMPILE_DEMOS=ON,编译。

option(COMPILE_DEMOS "Build ag_driver demos" OFF)

5.2.2 COMPILE_TOOLS

COMPILE_TOOLS 指定是否编译小工具。

  • COMPILE_TOOLS=OFF。是否编译小工具,分别取决于 COMPILE_TOOLS_VIEWER 和 COMPILE_TOOLS_PCDSAVER。这是默认值。

  • COMPILE_TOOLS=ON。编译 ag_driver_viewerag_driver_pcdsaver,不管 COMPILE_TOOLS_VIEWER 和 COMPILE_TOOLS_PCDSAVER 如何设置。

option(COMPILE_TOOLS "Build ag_driver tools" OFF)

5.2.3 COMPILE_TOOL_VIEWER

COMPILE_TOOLS_VIEWER 指定在 COMPILE_TOOLS=OFF 时,是否编译 ag_driver_viewer 工具。

  • COMPILE_TOOLS_VIEWER=OFF,不编译。这是默认值。

  • COMPILE_TOOLS_VIEWER=ON,编译。

option(COMPILE_TOOL_VIEWER "Build point cloud visualization tool" OFF)

5.2.4 COMPILE_TOOL_PCDSAVER

COMPILE_TOOL_PCDSAVER 指定在 COMPILE_TOOLS=OFF 时,是否编译ag_driver_pcdsaver 工具。

  • COMPILE_TOOLS_PCDSAVER=OFF,不编译。这是默认值。

  • COMPILE_TOOLS_PCDSAVER=ON,编译。

option(COMPILE_TOOL_PCDSAVER "Build point cloud pcd saver tool" OFF)

5.2.5 COMPILE_TOOL_IMAGETOOL

COMPILE_TOOL_IMAGETOOL 指定在 COMPILE_TOOLS=OFF 时,是否编译 ag_image_tool 工具。

  • COMPILE_TOOL_IMAGETOOL=OFF,不编译。这是默认值。

  • COMPILE_TOOL_IMAGETOOL=ON,编译。

option(COMPILE_TOOL_IMAGETOOL "Build range image tool" OFF)

5.3 改变编译行为的宏

5.3.1 DISABLE_PCAP_PARSE

DISALBE_PCAP_PARSE 指定是否支持 PCAP 数据源,也就是从 PCAP 文件解析 MSOP/DIFOP Packet。

  • DISABLE_PCAP_PARSE=OFF,支持 PCAP 数据源。这是默认值。

  • DISABLE_PCAP_PARSE=ON,不支持。在嵌入式 Linux 上,一般不需要解析 PCAP 文件,这个宏可以避免移植第三方的 libpcap 库。

option(DISABLE_PCAP_PARSE         "Disable PCAP file parse" OFF) 

5.3.2 ENABLE_TRANSFORM

ENABLE_TRANSFORM 指定是否支持坐标转换功能。

  • ENABLE_TRANSFORM=OFF,不支持。这是默认值。

  • ENABLE_TRANSFORM=ON,支持。注意:坐标转换功能显著消耗 CPU 资源,请不要在正式发布的产品中使用它。

option(ENABLE_TRANSFORM           "Enable transform functions" OFF)

5.3.3 ENABLE_DOUBLE_RCVBUF

ENABLE_DOUBLE_RCVBUF 指定是否增大接收 MSOP/DIFOP 的 socket 的接收缓存。

在某些平台上(如嵌入式 Linux、Windows),默认的接收缓存比较小,会导致丢包。这时,使能这个宏可以避免丢包。

  • ENABLE_DOUBLE_RCVBUF=OFF,不增大,保持系统的默认设置。这是默认值。

  • ENABLE_DOUBLE_RCVBUF=ON,增大。目前的实现是改成默认值的 4 倍,4 倍是针对部分平台测试的结果。如果需要,可以在代码中直接改变这个值。

option(ENABLE_DOUBLE_RCVBUF       "Enable double size of RCVBUF" OFF)

5.3.4 ENABLE_WAIT_IF_QUEUE_EMPTY

ENABLE_WAIT_IF_QUEUE_EMPTY 指定在 MSOP/DIFOP Packet 队列为空时,ag_driver 的处理线程等待的方式。

  • ENABLE_WAIT_IF_QUEUE_EMPTY=OFF, 等待条件变量通知。这是默认值。

  • ENABLE_WAIT_IF_QUEUE_EMPTY=ON,调用 usleep()。这样处理可以减少 CPU 资源消耗,但是会增大点云帧的延迟。

是否使能这个宏,需要根据具体的应用场景权衡利弊,再作决定。

option(ENABLE_WAIT_IF_QUEUE_EMPTY "Enable waiting for a while in handle thread if the queue is empty" OFF)

5.3.5 ENABLE_STAMP_WITH_LOCAL

ENABLE_STAMP_WITH_LOCAL 指定是否将点云的时间转换为本地时间。

  • ENABLE_STAMP_WITH_LOCAL=OFF,保持 UTC 时间,不转换。这是默认值。

  • ENABLE_STAMP_WITH_LOCAL=ON,根据时区设置,转换到本地时间。

option(ENABLE_STAMP_WITH_LOCAL    "Enable stamp point cloud with local time" OFF)

5.3.6 ENABLE_PCL_POINTCLOUD

ENABLE_PCL_POINTCLOUD 指定示例程序中的点云格式。

  • ENABLE_PCL_POINTCLOUD=OFF,Asensing 自定义格式。这是默认值。

  • ENABLE_PCL_POINTCLOUD=ON,PCL 格式。使能这个选项需要 PCL 库的支持。

option(ENABLE_PCL_POINTCLOUD      "Enable PCL Point Cloud" OFF)

5.3.7 ENABLE_CRC32_CHECK

ENABLE_CRC32_CHECK 指定对 MSOP/DIFOP Packet 的数据作 CRC32 校验。

  • ENABLE_CRC32_CHECK=OFF,不校验。这是默认值。

  • ENABLE_CRC32_CHECK=ON,校验。使能这个选项,需要雷达本身支持这个特性。

option(ENABLE_CRC32_CHECK      "Enable CRC32 Check on MSOP Packet" OFF)

5.3.8 ENABLE_DIFOP_PARSE

ENABLE_DIFOP_PARSE 指定是否解析 DIFOP Packet,得到雷达的配置和状态数据。

option(ENABLE_DIFOP_PARSE      "Enable Parsing DIFOP Packet" OFF)