5 CMake编译宏介绍
5.1 概述
ag_driver 工程目录下的 CMakeLists.txt 中,定义了一组条件编译宏,可以改变编译 ag_driver 的目标和行为。
5.2 指定编译目标的宏
ag_driver 的编译目标包括:
示例程序,包括
demo_online、demo_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_viewer和ag_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,得到雷达的配置和状态数据。
ENABLE_DIFOP_PARSE=OFF,不解析。这是默认值。
ENABLE_DIFOP_PARSE=ON,解析。注意这个特性只是解析几个域作为例子。请参考文档《如何解析DIFOP中的配置和状态数据》
option(ENABLE_DIFOP_PARSE "Enable Parsing DIFOP Packet" OFF)