# LidarView 开发手册 ## 1. LidarView 编译概览 本文档收集了构建基于 LidarView 的应用程序所需的所有信息。部分内容与 [安装指南](Documentation/INSTALLATION.md) 中的信息类似。 LidarView 主要依赖于 CMake 和 *superbuild* 系统,它处理大多数(不是全部)必要依赖项的下载和编译。 但是由于各种原因,superbuild 可能会(或可能不会)提供某些依赖项,并且必须在某些平台上从外部获取,请参阅以下部分了解每个平台的说明。 LidarView 目前在 Windows、Ubuntu 18.04、Ubuntu 20.04 和 OSX 上积极维护。 ## 2. 配置和构建说明 ### 2.1 跨平台说明 **跨平台依赖和工具** 以下工具的特定版本可能在你的操作系统包管理器中可用,也可能不可用。 - **[必需] CMake 3.20.3+**,下载地址: - **[推荐] Ninja 1.8.2+**,下载地址: 强烈建议在所有平台上使用 Ninja 以加快编译速度,如果你不想使用它,请确保从配置命令中删除 `-GNinja` 选项。 ### 2.2 Windows 说明 #### 2.2.1 Windows 特定依赖 - **Microsoft Visual Studio 14/17/19** 为支持新旧版本做出了巨大努力。 如果你对向后兼容性或许可有疑虑,可能更倾向于使用 MSVC 14 (2015),请参阅 [附加说明](#msvc15-installer) - **Qt 5.15.2** 你必须自己构建它并在配置时指定 Qt 的目录。 更多信息,请参阅 [附加说明](#qt-build)。 - **[仅用于打包]** **NSIS version 3.04 及以上版本**,下载地址: #### 2.2.2 Windows 注意事项 - **必须使用 MSVC 构建环境命令提示符(随 MSVC 一起安装)** 打开位置 `Windows Start Menu > Visual Studio 20XX > "VS20XX x64 Native Tools Command Prompt"` 提示:如果你不熟悉 Windows 开发,建议使用该提示(Prompt)进行构建,因为与常规 cmd.exe 提示相比,它设置了适当的构建环境。 - **工作目录、源(src)和构建(build)路径必须短且靠近根(root)驱动器** 这些目录的路径必须很短,因为 Windows 对文件路径和命令的最大长度有限制。 提示:这些路径在构建过程中会出现无数次,可能会不小心达到最大限制。 - **源目录不得位于 LidarView 源代码目录中** 建议使用如下目录结构: | 位置 | 工作目录 | | -------- | ---------- | | C:\src | 源代码目录 | | C:\build | 构建目录 | 注意:在配置或编译后移动这些目录,将破坏所有构建环境并需要完全重建。 #### 2.2.3 Windows 构建说明 - 请注意,配置命令提到了源目录中的子目录“*Superbuild*”目录,而不是源目录本身。 - 请注意,CMake 变量,如 `Qt5_DIR` 路径参数,必须在所有平台(Unix PATH 格式)上使用正斜杠(`/`),否则 MSVC 将使用 `\\Q` 作为构建选项。 - 如果你更改了默认的 Qt 安装路径,则必须调整配置命令。 - 从头开始构建可能需要 20 分钟到 2 小时,具体取决于你的硬件性能。 - 默认情况下,添加 `-j` 选项将使用机器上所有的核进行编译,你也可以使用 `-j N` 指定要使用的内核数。 ```bash cd git clone --recurse-submodules src mkdir \build cd \build cmake \src\Superbuild -GNinja -DCMAKE_BUILD_TYPE=Release -DUSE_SYSTEM_qt5=True -DQt5_DIR="C:/Qt/Qt5.15.2/5.15.2/msvc2015_64/lib/cmake/Qt5" cmake --build . -j install\bin\ ``` ### 2.3 Linux 构建说明 #### 2.3.1 Linux 特定依赖 **显卡驱动** 确保显卡驱动程序是最新的,确保安装了必要的图形软件包。 提示:如果你没有显卡,则需要安装 `mesa` 驱动程序。 **软件包/库** - 在 Ubuntu 18.04 及更高版本上构建,需要安装以下软件包: ```bash sudo apt-get install build-essential byacc flex freeglut3-dev libbz2-dev libffi-dev \ libfontconfig1-dev libfreetype6-dev libnl-genl-3-dev libopengl0 libprotobuf-dev \ libx11-dev libx11-xcb-dev libx11-xcb-dev libxcb-glx0-dev libxcb-glx0-dev \ libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev \ libxcb-render-util0-dev libxcb-shape0-dev libxcb-shm0-dev libxcb-sync-dev \ libxcb-util-dev libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-xkb-dev libxcb1-dev \ libxext-dev libxext-dev libxfixes-dev libxi-dev libxkbcommon-dev libxkbcommon-dev \ libxkbcommon-x11-dev libxkbcommon-x11-dev libxrender-dev libxt-dev pkg-config \ protobuf-compiler zlib1g-dev ``` - 如果是 Ubuntu 20,还需要额外安装: ```bash sudo apt-get install libglx-dev ``` **[可选] Qt5** Qt5 由 Superbuild 自动构建,但是为了加快构建过程,你可以选择使用内置的二进制文件,选项参数如下: - 如果你的系统软件包管理器提供 Qt5 5.15.2 或以上版本(例如 Ubuntu20.04),那么使用: ```bash qt5-default qtmultimedia5-dev qtbase5-private-dev libqt5x11extras5-dev libqt5svg5-dev qttools5-dev ``` 并将选项参数 `-DUSE_SYSTEM_qt5=ON` 添加到 CMake 配置中。 - 自行构建:详细说明请参考 [附加说明](#qt-build) #### 2.3.2 Linux 指导说明 **源目录不得位于 LidarView 源代码目录中**. 推荐的目录结构如下: | /home/username/lidarview | 工作目录 | | ------------------------------ | -------- | | /home/username/lidarview/src | 源目录 | | /home/username/lidarview/build | 构建目录 | **注意:**在配置或编译后移动这些目录,将破坏所有构建环境并需要完全重建。 #### 2.3.3 Linux 编译说明 - 请注意,配置命令提到了源目录中的子目录 *Superbuild* 目录,而不是源目录本身。 - 如果你更改了默认的 Qt 安装路径,则必须调整配置命令。 - 从头开始构建可能需要 20 分钟到 2 小时,具体取决于你的硬件性能。 - 默认情况下,添加 `-j` 选项将使用机器上所有的核进行编译,你也可以使用 `-j N` 指定要使用的内核数。 - 如果你选择使用预构建的二进制文件而不是默认的 Superbuild 编译,请不要忘记 Qt5 配置选项。 ```bash cd git clone --recurse-submodules src mkdir /build cd /build cmake /src/Superbuild -GNinja -DCMAKE_BUILD_TYPE=Release cmake --build . -j ./install/bin/ ``` ![](./images/lidarview-build-done-on-ubuntu.png) ## 3. 使能 LidarView 扩展特性 ### 3.1 使能 SLAM 特性 - 在 **UNIX** 系统需要安装额外的软件包: ```bash sudo apt-get install liblapack-dev ``` - 使用这些附加的选项参数,重新运行 CMake 配置命令: ```bash -DENABLE_ceres=True -DENABLE_nanoflann=True -DENABLE_pcl=True -DLIDARVIEW_BUILD_SLAM=True ``` - 运行或重新运行 CMake 构建命令: ```bash cmake --build . -j ``` 有关 SLAM 的更多信息,请访问《[How to SLAM with LidarView](https://gitlab.kitware.com/keu-computervision/slam/-/blob/master/paraview_wrapping/doc/How_to_SLAM_with_LidarView.md)》。 ### 3.2 使能 OpenCV 特性 - 安装 OpenCV 下载地址 ,在 UNIX 系统中,你可以使用如下命令安装: ```bash sudo apt-get install libavformat-dev libavdevice-dev libavcodec-dev ``` - 使用下列附加参数重新运行 CMake 配置命令: ```bash -DENABLE_opencv=True ``` - 运行或重新运行 CMake 构建命令: ```bash cmake --build . -j ``` ## 4. 增量构建说明 - 如果你只修改了 LidarView 源代码,通常会希望增量构建,以缩短构建时间。命令如下: ```bash cd \build\common-superbuild\lidarview\build cmake --build . -j --target install ``` ## 5. 调试构建说明 - 完整的 superbuild 不能在调试模式下可靠地构建,但是单个项目,如 LidarView 本身可以在 `Debug` 或 `RelWithDebInfo` 模式下构建: ```bash cd \build\common-superbuild\lidarview\build cmake . -DCMAKE_BUILD_TYPE=Debug cmake --build . -j --target install ``` ## 6. 打包说明 - 通过 CMake 配置激活 tests 的构建: ```bash cd /build cmake . -DBUILD_TESTING=True ``` - 使用新配置构建: ```bash cmake --build . -j ``` - 使用 cpack 打包: ```bash ctest ``` ## 7. 测试说明 运行基于 LidarView 的应用程序测试的详细说明《[LidarView Testing Guide](LidarPlugin/Plugin/LidarCore/Testing/README.md)》。 ## 8. 附加说明 ### 8.1 从源代码构建 Qt5.15.2 Qt5.15.2 - [Source Package](https://download.qt.io/official_releases/qt/5.15/5.15.2/single/) 查看构建脚本 [Build Script](https://gitlab.kitware.com/LidarView/lidarview-superbuild/utils),安装位置说明: - 在 Unix 系统,我们推荐安装在 `/opt` 目录,并使用以下命令将此目录添加到你的 ld 配置中: ```bash sudo echo "/usr/local/lib" >> /etc/ld.so.conf && sudo ldconfig ``` - 在 Windows 系统,我们推荐安装在 `C:\` 盘 ```bash * Add proper parameters to CMake configuration options: `-DUSE_SYSTEM_qt5=ON -DQt5_DIR="/path/to/install/location/lib/cmake/Qt5"` **Always forward slashes, UNIX style, on all platforms** e.g If installed in `/opt`: `-DQt5_DIR=/opt/Qt5.15.2/5.15.2/gcc_64/lib/cmake/Qt5` e.g If installed in `C:\` : `-DQt5_DIR=C:/Qt/Qt5.15.2/5.15.2/msvc2015_64/lib/cmake/Qt5` ``` ### 8.2 Microsoft Visual Studio 14 (2015) Express 下载地址:[Microsoft Visual Studio Express 2015 for Windows Desktop - 简体中文](http://go.microsoft.com/fwlink/?LinkId=615464) 你也可以点击[这里](https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2015/install/create-an-offline-installation-of-visual-studio?view=vs-2015)下载离线安装包,或者下载 [ISO 镜像](https://go.microsoft.com/fwlink/?LinkId=615448)。 ## 9. 疑难解答 / FAQ ### 9.1 UBUNTU Cannot find Qt Packages "unable to locate package qt5-default" 解决:Qt 是 [community software](https://packages.ubuntu.com/focal/qt5-default),修改 Ubuntu 系统中的 /etc/apt/sources.list 文件,取消注释(或添加)`universe` PPA 源。例如,`deb http://archive.ubuntu.com/ubuntu/ focal universe`。 ### 9.2 Superbuild failure with PCL enabled 由于硬件的差别,当你启用 `-DENABLE_pcl=True` 时,superbuild 可能会在 PCL 编译期间失败,并由于内存分配紧张而出现 *Internal compiler error* 错误。 要解决该问题,你可以尝试: - 重新运行构建命令,因为连续的增量构建最终可能会成功。 - 使用 `-j N` 选项减少构建命令中的编译作业数量。