一、在工作空间下编译Lego loam的代码,报错如下,
CMake Error at LeGO-LOAM/LeGO-LOAM/CMakeLists.txt:23 (find_package): By not providing "FindGTSAM.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "GTSAM", but CMake did not find one. Could not find a package configuration file provided by "GTSAM" with any of the following names: GTSAMConfig.cmake gtsam-config.cmake Add the installation prefix of "GTSAM" to CMAKE_PREFIX_PATH or set "GTSAM_DIR" to a directory containing one of the above files. If "GTSAM" provides a separate development package or SDK, be sure it has been installed. -- Configuring incomplete, errors occurred! See also "/home/gordon/ros_ws/build/CMakeFiles/CMakeOutput.log". See also "/home/gordon/ros_ws/build/CMakeFiles/CMakeError.log". Makefile:13060: recipe for target 'cmake_check_build_system' failed make: *** [cmake_check_build_system] Error 1
解决方法:
1. 在terminal中使用 locate 指令查找本机是否有 GTSAMConfig.cmake 或 gtsam-config.cmake 及其所在路径。
2. echo $PATH 和 echo $GTSAM_DIR 查看环境变量中是否包含上述路径。(一般是不包含的,所以编译时报错)。
3. 往环境变量中添加上述路径。至此,一般都可以编译通过。
二、编译pl-slam,报错如下,
Could not find a package configuration file provided by "G2O" with any of the following names: G2OConfig.cmake g2o-config.cmake Add the installation prefix of "G2O" to CMAKE_PREFIX_PATH or set "G2O_DIR" to a directory containing one of the above files. If "G2O" provides a separate development package or SDK, be sure it has been installed.
通过locate指令,我在 /usr/local/g2o/lib/cmake/g2o 中找到 g2oConfig.cmake 文件。使用以上方法添加路径后,依然报相同的错误。一番观察后,发现本机文件 g2oConfig.cmake 和报错内容有不相符的地方。于是尝试将本机文件改名,
g2oConfig.cmake --> G2OConfig.cmake
成功解决!
三、在源码包中确实找不到 <PACKAGE>Config.cmake 或者 <package>-config.cmake
有两种方法:1)可能是 package-config 文件,不带cmake后缀;2)下策,自行创建 <PACKAGE>Config.cmake 或者 <package>-config.cmake ;