更新Cmake后出现CMake Error Could not find CMAKE_ROOT错误

截止到2020/8/14,在ubuntu-16.04中使用sudo apt install cmake安装的还是3.5.1版本的cmake,在ubuntu-20.04中则是3.16.3版本,而cmake官网上早已经更新到了3.18.1版本。

很多时候,一些开源项目需要高版本的cmake才能编译,所以我们需要从源码编译安装cmake,这一步网上有非常多的教程。

当我们跟着教程执行完sudo make install以后,使用cmake --version查看版本时,却会收到这样的报错:

CMake Error: Could not find CMAKE_ROOT !!!
CMake has most likely not been installed correctly.
Modules directory not found in
/usr/local/share/cmake-3.16
cmake version 3.16.3

关于这个问题,先说解决方式,其实只需要重新开一个终端,然后再使用cmake --version命令,我们就可以正确看到我们刚刚安装的cmake的版本提示了,也就是说,其实根本不存在什么问题,只要关闭原来开启的终端就可以了。

那么为什么会出现这样的问题呢?其实要从哈希表说起,当我们刚刚打开一个终端时,此时哈希表只有一条记录。每当我们再执行命令时,哈希表会记录下这条命令的路径,就相当于缓存一样。

第一次执行命令shell解释器默认的会从PATH路径下寻找该命令的路径,当我们第二次使用该命令时,shell解释器首先会查看哈希表,没有该命令才会去PATH路径下寻找。

所以哈希表可以大大提高命令的调用速率,但是CMake Error: Could not find CMAKE_ROOT错误的原因也出在这里,如果我们之前在这个终端执行过cmake命令,那么哈希表就会自动记录下之前版本cmake的路径,我们可以通过输入hash -l查看,如下图所示:
在这里插入图片描述

所以当我们更新了cmake以后,当我们输入cmake相关命令时,shell解释器便会去哈希表里面查找之前版本cmake的路径,然后便产生了错误。

所以其实也可以在该终端执行hash -r命令来清除哈希表的内容,然后再执行cmake --version命令,也可以消除报错,如下图所示:
更新Cmake后出现CMake Error Could not find CMAKE_ROOT错误_第1张图片

参考资料

hash命令:显示、添加或清除哈希表

Cmake出现CMake Error: Could not find CMAKE_ROOT !!!

你可能感兴趣的:(经验总结,cmake,makefile,linux,ubuntu)