解决 “编译需要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/local/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:

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

注:<folder where tbb /include and /lib is>是TBB源码目录,例如:

cd oneTBB_202001
cmake -DTBB_ROOT=/home/twilight/twilight_lib/oneTBB-2020.1 -DTBB_OS=Linux -P cmake/tbb_config_generator.cmake

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

twilight@pc:~/twilight_lib/oneTBB-2020.1/cmake$ ls
README.rst       tbb_config_generator.cmake  TBBGet.cmake            templates
TBBBuild.cmake   tbb_config_installer.cmake  TBBInstallConfig.cmake
TBBConfig.cmake  TBBConfigVersion.cmake      TBBMakeConfig.cmake

Step 3:安装TBB

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

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

Step 4:手动安装库文件

# 在TBB源码目录下
cd oneTBB_202001/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 mkdir TBB
sudo cp TBBConfig.cmake  TBBConfigVersion.cmake /usr/local/lib/cmake/TBB/.

至此,TBB编译安装成功。

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 32
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值