编译报错 CMake Error: The following variables are used in this project, but they are set to NOTFOUND.

  • Post author:
  • Post category:其他




1. Problem

用一块新的Nvidia的 Jetson NX板编译时遇到一个报错,如下:

error

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_cublas_device_LIBRARY (ADVANCED)
    linked by target "fast_vgicp_cuda" in directory /home/xi/run_ws/src/localization/fast_gicp

意思大概就是当前的CMake没有这个变量可以编译,其实就是CMake的版本不对。 Check之后当前的版本是3.10.2,然后我查了一下另一块NX的板,这块板正常跑没问题,也能cakin_make成功,用的是CMake 3.21.0

所以只要换个cmake的版本就可以解决这个问题。具体操作如下。



2. Solution

1)先确认一下当前的版本:

cmake --version


2) 卸载cmake:

建议不卸载,特别是安装了ROS的

,如果卸载直接用指令

sudo apt remove cmake

会把ROS的一些文件也一并删了,这就很恶心了,ROS会打不开,而且可能还会影响重装,有时按照ros wiki重装后也打不开。所以建议不要卸载,直接备份一下,重新安装就好

3)备份当前cmake,这也是为了给之后如果安装失败,留条后路

which cmake
# /usr/bin/cmake
cd /usr/bin
sudo mv cmake cmake_bak

4)到官网去下载CMake

官网:https://cmake.org/files/v3.21/

选择对应的版本,我选的是

cmake version

5) 安装

tar xf  cmake-3.21.0.tar.gz
cd cmake-3.21.0
sudo apt-get install build-essential 

等上面这一步安装完后,给cmake-3.21.0权限

cd ..
sudo chmod -R 777 cmake-3.21.0
cd cmake-3.21.0
./bootstrap

继续等待。。。

./configure
make
sudo make install

到这如果都没问题的话应该就成功了,再次查看当前cmake版本:

cmake --version


如果显示的是3.21.0版本就说明成功了

也可以把执行文件放到/usr/bin下,我没放,好像也没问题,依然可以编译我的文件,只是

which cmake

显示的路径是在/usr/local/bin/cmake

把执行文件放到/usr/bin下的操作是:

 sudo cp ~/cmake-3.21.0/bin/cmake /usr/bin/

上面这个路径跟你把cmake文件解压到哪有关



Reference

  1. cmake版本升级(ubuntu1804):

    https://blog.csdn.net/qq_37425813/article/details/120436670



版权声明:本文为Will_Ye原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。