Ubuntu18.04下Qt4和Qt5的切换方法

背景:

今天在配置Jetson上的demo环境时卡在Qt版本的选择上。系统Ubuntu18.04上依次安装了Qt5.9.8和Qt4.8.6,demo环境需要Qt4,始终找不到Qt4。

经过:

在分析了demo环境配置makefile发现是通过find_package(Qt4 REQUIRED)来查找Qt4。查找find_package资料,发现cmake通过FindQt4.cmake来查找Qt4,分析FindQt4.cmake没有找到有用信息(内容太多没有仔细看看),调查中断。由于通过Qmake -v命令查看Qt版本(显示为Qt5),因此转向分析Qmake,发现在/usr/bin中的qmake实际指向qtchooser,通过qtchooser -print-env发现QTLIBDIR="/usr/lib/aarch64-linux-gnu/qt4/bin",已经指向了Qt4,此时非常不解。

中午吃完饭后,突然灵光一闪,以前在windows上配置Qt时经常用到的环境变量QTDIR在哪?通过echo $QTDIR 发现指向的是Qt5所在路径,百度找了下QTDIR的修改方法,抱着试一试的想法修改QTDIR为Qt4的路径,再用Qmake -v发现已经切换到Qt4,问题解决。另外,通过分析/etc/profile发现,Qt的其他环境变量是通过QTDIR来设置的。

export QTDIR=/usr/local/qt-4.8.6
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
 

结论:

Qt最重要的环境变量为QTDIR!

另外,ubuntu环境变量修改方法,参考以下文章,非常全面:

ubuntu环境变量的三种设置方法

https://www.cnblogs.com/jpfss/p/11107080.html

 

ps:下午继续研究FindQt4.cmake,发现环境只认/usr/bin/qmake,而这个qmake只是qtchooser的一个软连接,qtchooser的配置在/usr/lib/aarch64-linux-gnu/qt-default/qtchooser/default.conf,这个default.conf又是指向../../../../share/qtchooser/qt4-aarch64-linux-gnu.con软连接,而实际内容如下:

/usr/bin
/usr/lib/aarch64-linux-gnu/qt4/bin
/usr/lib/aarch64-linux-gnu

第一个地址正是/usr/bin,因此在使用 qmake -query  QT_VERSION 查询QT版本时无法退出(陷入死循环)。

目前的方法是在/usr/share/qtchooser/创建一个类似qt4-aarch64-linux-gnu.conf的新文件,新文件内容有两行,第一行为qt4的bin路径(/usr/local/qt-4.8.6/bin),第二行为qt4的lib路径(/usr/local/qt-4.8.6/lib)。修改/usr/lib/aarch64-linux-gnu/qt-default/qtchooser/default.conf软连接到新文件。执行qmake -query QT_VERSION输出4.8.6,OK。

参考网址:https://unix.stackexchange.com/questions/116254/how-do-i-change-which-version-of-qt-is-used-for-qmake

你可能感兴趣的:(第三方库编译)