问题产生
- 在ubuntu环境下运行C++代码,工程文件中CMakeLists文件显示要求cmake的版本最低是3.15,但是我的本地版本是3.11,虽然修改CMakelists文件为3.11也是可以编译通过,但是潜在的问题是未知的。
查看本地cmake的版本
- cmake --version
错误做法
- 卸载原来的cmake sudo apt-get autoremove cmake
- 卸载会使得使用先前cmake编译的包文件全部卸载,这是极其危险的
正确做法
- 从官网下载所需要的安装包 cmake的下载地址
- 使用ubuntu环境,一般下载的文件的名字是 cmake-3.xx.xx-Linux-x86_64.tar.gz
- 将压缩包移动到/opt/目录下,/opt里的文件则是安装系统后用户自己安装的其他应用软件,一般是源码包的软件,在当前下载的文件夹下就不可以
- 进入/opt文件夹下,解压压缩包 tar -xvzf cmake-3.xx.xx-Linux-x86_64.tar.gz
- 进入解压后的文件夹,cd cmake-3.xx.xx-Linux-x86_64
- 里面会有四个目录 bin doc man share
- 这个版本是免安装的,因此没有./configure 命令或者 ./bootstrap 命令
- 配置~/.bashrc文件 使用命令gedit ~/.bashrc
- 设置cmake的环境变量 export PATH=/opt/cmake-3.xx.xx-Linux-x86_64/bin:$PATH
- 使用强制方式,建立软连接 ln -sf /opt/cmake-3.xx.x-Linux-x86_64/bin/* /usr/bin/
- 在使用cmake时实际上就是调用了cmake-3.13.4-Linux-x86_64/bin/路径下的cmake来执行的,因此将这个bin下的所有文件全部软连接到/usr/bin/下面,这样就完成了sudo cmake的升级
- 验证版本 cmake --version
参考链接
- cmake的版本的更新以及和sudo cmake的区别
问题
- 使用这个方式之后,发现在普通用户下还是之前的旧的版本,但是在root用户下是最新的版本
- 导致sudo命令不可以使用,即使安装了也没有用。权限很高的命令,只可以通过切换root用户的方式进行使用,使用命令 su root