Ubuntu 22.04下qmake安装路径异常:如何指定自定义安装目录?
问题描述
在Ubuntu 22.04系统上,通过以下命令构建项目:
qmake -qt=qt5 make sudo make install
原本期望项目被安装到/usr/local/bin目录,但实际却被安装到/opt/QFtpServer/bin/,对应的安装命令为:
/usr/lib/qt5/bin/qmake -install qinstall -exe QFtpServer /opt/QFtpServer/bin/QFtpServer
尝试了两种方法都没达到预期:
- 执行
PREFIX=/usr/local sudo make install,完全没效果; - 执行
sudo make install INSTALL_ROOT='/usr/local',项目被安装到/usr/local/opt/QFtpServer/bin/QFtpServer,而不是想要的/usr/local/bin/QFtpServer,对应的安装命令为:
/usr/lib/qt5/bin/qmake -install qinstall -exe QFtpServer /usr/local/opt/QFtpServer/bin/QFtpServer
需求:希望在执行sudo make install时通过设置环境变量的方式,把项目安装到指定的/usr/local/bin路径,不需要编辑.pri文件、不需要在首次构建时做配置,也不用重新构建项目。
解决方案
直接在安装时覆盖QMAKE_INSTALL_PREFIX变量
qmake生成的Makefile默认支持通过QMAKE_INSTALL_PREFIX指定安装前缀,执行下面的命令就能直接替换原有的默认前缀,把程序安装到目标路径:
sudo make install QMAKE_INSTALL_PREFIX=/usr/local
这个命令会把原项目中默认的前缀/opt/QFtpServer替换成/usr/local,最终程序就会被安装到/usr/local/bin/QFtpServer。
补充说明
- 之前用
PREFIX无效的原因:qmake不识别通用的PREFIX变量,它默认用QMAKE_INSTALL_PREFIX作为安装前缀的控制变量; - 用
INSTALL_ROOT出现嵌套路径的原因:INSTALL_ROOT的设计用途是给现有安装路径添加根目录(比如打包时用),不是用来替换原有前缀,所以会把原路径/opt/QFtpServer/bin拼到/usr/local后面,形成嵌套路径。
内容的提问来源于stack exchange,提问作者sashoalm
相关产品推荐
相关产品推荐

