问题描述:
在源码编译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编译安装成功。