解决 “编译需要TBBConfig.cmake,但TBB 2020及older版本不生成.cmake文件”的问题

问题描述:

在源码编译grid_map库时,报错如下,意思是系统中无法找到TBBConfig.cmake,也就是系统中没有安装TBB。

理论上通过源码cmake编译安装TBB即可,但是grid_map编译需要v2020.1版本的TBB,2020及older版本的TBB安装文件不直接提供cmake编译所需要的文件(2021版本及以上直接编译安装即可),具体表现为:

  • 不提供TBBConfig.cmake的,所以需要自行生成TBBConfig.cmake
  • .so 以及 .h文件需要脚本文件生成
  • 库文件需要手动复制到/usr下

所以下记录此次安装过程。
报错:

CMake Error at grid_map/grid_map_filters/CMakeLists.txt:35 (find_package):
  By not providing "FindTBB.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "TBB", but
  CMake did not find one.

  Could not find a package configuration file provided by "TBB" (requested
  version 2020.1) with any of the following names:

    TBBConfig.cmake
    tbb-config.cmake

  Add the installation prefix of "TBB" to CMAKE_PREFIX_PATH or set "TBB_DIR"
  to a directory containing one of the above files.  If "TBB" provides a
  separate development package or SDK, be sure it has been installed.


-- Configuring incomplete, errors occurred!
See also "/home/twilight/project/robot/grid_map_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/twilight/project/robot/grid_map_ws/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed

解决:

通过源码编译安装TBB,但是grid_map编译需要v2020.1版本的TBB,2020及older版本的TBB是不提供TBBConfig.cmake的,所以需要cmake编译命令生成TBBConfig.cmake,然后复制到/usr/lib/cmake路径下。

Step 1:下载源码,切换到指定版本branch

git clone https://github.com/oneapi-src/oneTBB
# 查看tag,找到2020.1版本
git checkout v2020.1

Step 2:cmake 生成TBBConfig.cmake

下载到的2020.1版本的TBB文件如下:
解决 “编译需要TBBConfig.cmake,但TBB 2020及older版本不生成.cmake文件”的问题_第1张图片
生成TBBConfig.cmake:

cd cmake
cmake -DTBB_ROOT=<folder where tbb /include and /lib is>   -DTBB_OS=Linux -P cmake/tbb_config_generator.cmake

可以看到该命令后,在cmake文件价生成了TBBConfig.cmake

Step 3:安装TBB

cd build
sudo chmod +x *.sh
sh generate_tbbvars.sh
sh tbbvars.sh

至此,TBB安装需要的库文件都已经生成

Step 4:手动安装库文件

# 在TBB源码目录下
cd build
cd linux_intel64_gcc_cc5.5.0_libc2.31_kernel5.11.0_release #该目录根据系统gcc版本和kernal版本自动生成
sudo cp *.so /usr/local/lib #或者/usr/lib
sudo cp *.so.2 /usr/local/lib #或者/usr/lib
sudo /sbin/ldconfig

# 在TBB源码目录下
cd include
sudo cp -rf ./* /usr/local/include

# 在TBB源码目录下
cd cmake
sudo cp TBBConfig.cmake  TBBConfigVersion.cmake /usr/local/lib/cmake/TBB/.

至此,TBB编译安装成功。

你可能感兴趣的:(四足机器人开发,linux,运维)