You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 03:22:46